Pandas sum of all word counts in column

前端 未结 4 1092
自闭症患者
自闭症患者 2021-01-23 21:03

I have a pandas column that contains strings. I want to get a word count of all of the words in the entire column. What\'s the best way of doing that without looping through eac

4条回答
  •  孤街浪徒
    2021-01-23 21:28

    Another option using the cat string method. We will smash all strings together then split and count

    len(df["a"].str.cat(sep=' ').split())
    

    elaborate test data

    li = [
        'Lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur',
        'adipiscing', 'elit', 'Integer', 'et', 'tincidunt', 'nisl',
        'Sed', 'pretium', 'arcu', 'nec', 'est', 'hendrerit',
        'vestibulum', 'Curabitur', 'a', 'nibh', 'justo', 'Praesent',
        'non', 'pellentesque', 'enim', 'ac', 'nulla', 'ut', 'mi',
        'diam', 'Aenean', 'placerat', 'ante', 'euismod', 'pulvinar',
        'augue', 'purus', 'ornare', 'erat', 'pharetra', 'mauris',
        'sapien', 'vitae', 'In', 'id', 'velit', 'quis', 'mattis',
        'condimentum', 'Cras', 'congue', 'neque', 'faucibus', 'nisi',
        'tempor', 'eget', 'Etiam', 'semper', 'Nulla', 'elementum',
        'magna', 'Donec', 'vel', 'ex', 'dictum', 'Aliquam', 'lobortis',
        'rutrum', 'ligula', 'Vivamus', 'eu', 'eros', 'Morbi', 'blandit',
        'rhoncus', 'consequat', 'orci', 'convallis', 'finibus', 'lorem',
        'urna', 'molestie', 'in', 'sed', 'luctus', 'Ut', 'imperdiet',
        'felis', 'Mauris', 'nunc', 'malesuada', 'lacinia', 'Vestibulum',
        'bibendum', 'risus', 'tortor', 'sollicitudin', 'aliquam',
        'primis', 'ultrices', 'posuere', 'cubilia', 'Curae',
        'Phasellus', 'turpis', 'auctor', 'venenatis', 'Pellentesque',
        'fermentum', 'accumsan', 'maximus', 'Fusce', 'ultricies',
        'tristique', 'sodales', 'suscipit', 'sagittis', 'at', 'cursus',
        'Nullam', 'dui', 'fringilla', 'mollis', 'Orci', 'varius',
        'natoque', 'penatibus', 'magnis', 'dis', 'parturient', 'montes',
        'nascetur', 'ridiculus', 'mus', 'facilisi', 'sem', 'viverra',
        'feugiat', 'aliquet', 'lectus', 'porta', 'Nunc', 'facilisis',
        'Duis', 'volutpat', 'scelerisque', 'Maecenas', 'tempus',
        'massa', 'laoreet', 'gravida', 'odio', 'iaculis', 'libero',
        'eleifend', 'leo', 'Quisque', 'ullamcorper', 'dignissim',
        'interdum', 'vulputate', 'lacus', 'vehicula', 'Nam', 'commodo',
        'dapibus', 'efficitur', 'tellus', 'Suspendisse', 'metus',
        'Proin', 'quam', 'porttitor', 'egestas'
    ]
    
    df = pd.DataFrame(
        dict(a=[' '.join(
                np.random.choice(li, np.random.randint(5, 10, 1))
        ) for _ in range(10000)]))
    

    naive test results

提交回复
热议问题