Pandas列中所有单词计数的总和

2024-04-25 21:05:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含字符串的pandas列。我想得到整个专栏中所有单词的字数。在不遍历每个值的情况下,最好的方法是什么?在

df = pd.DataFrame({'a': ['some words', 'lots more words', 'hi']})

df['a']上运行时,应该得到6


Tags: 方法字符串dataframepandasdfmore情况some
3条回答

您可以使用vectorized string operations

In [7]: df["a"].str.split().str.len().sum()
Out[7]: 6

它来自

^{pr2}$

另一个使用cat字符串方法的选项。我们将把所有的线都弄碎然后分开数数

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

详细的测试数据

^{pr2}$

原始测试结果

enter image description here

df.a.str.extractall('(\w+)').count()[0]

这将提取a中每个单元格中的所有单词(与regex (\w+)匹配),并将它们放入一个新的框架中,如下所示:

^{pr2}$

然后,您可以对行执行count来获得单词数。在

请注意,如果需要,可以随时更改regex。例如,如果某些单词可能包含标点符号,则可以将单词定义为任意系列的非空白字符,并执行以下操作:

df.a.str.extractall('(\S+)').count()[0]

取而代之的是

编辑

如果您完全关心速度,请使用DSM的解决方案:

使用ipython的基本时间测试%timeit

%timeit df.a.str.extractall('(\S+)').count()[0] 
1000 loops, best of 3: 1.28 ms per loop

%timeit df["a"].str.split().str.len().sum()
1000 loops, best of 3: 447 µs per loop

相关问题 更多 >