This question already has answers here:
Count number of words per row

(4个答案)


1年前关闭。




假设我们有简单的数据框
df = pd.DataFrame(['one apple','banana','box of oranges','pile of fruits outside', 'one banana', 'fruits'])
df.columns = ['fruits']

如何计算关键字中的单词数,类似于:
1 word: 2
2 words: 2
3 words: 1
4 words: 1

最佳答案

然后,您可以执行IIUC:

In [89]:
count = df['fruits'].str.split().apply(len).value_counts()
count.index = count.index.astype(str) + ' words:'
count.sort_index(inplace=True)
count

Out[89]:
1 words:    2
2 words:    2
3 words:    1
4 words:    1
Name: fruits, dtype: int64

在这里,我们使用矢量化的 str.split 在空格上进行分割,然后使用 apply len获取元素数量的计数,然后可以调用 value_counts 汇总频率计数。

然后,我们重命名索引并对其进行排序以获得所需的输出

更新

也可以使用str.len而不是apply来完成,这应该更好地扩展:
In [41]:
count = df['fruits'].str.split().str.len()
count.index = count.index.astype(str) + ' words:'
count.sort_index(inplace=True)
count

Out[41]:
0 words:    2
1 words:    1
2 words:    3
3 words:    4
4 words:    2
5 words:    1
Name: fruits, dtype: int64

时间
In [42]:
%timeit df['fruits'].str.split().apply(len).value_counts()
%timeit df['fruits'].str.split().str.len()

1000 loops, best of 3: 799 µs per loop
1000 loops, best of 3: 347 µs per loop

对于6K df:
In [51]:
%timeit df['fruits'].str.split().apply(len).value_counts()
%timeit df['fruits'].str.split().str.len()

100 loops, best of 3: 6.3 ms per loop
100 loops, best of 3: 6 ms per loop

关于python - 如何计算DataFrame中字符串中的单词数? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37483470/

10-12 22:57