一尘不染

计算每行字数

python

我试图在一个数据框中创建一个新列,其中包含相应行的字数统计。我在寻找的是单词的总数,而不是每个不同单词的出现频率。我认为会有一个简单/快速的方法来做到这一点共同的任务,但周围的Googling和阅读SO职位)我卡住了。我已经尝试了在链接的SO帖子中提出的解决方案,但又遇到了很多属性错误。

words = df['col'].split()
df['totalwords'] = len(words)

结果是

AttributeError: 'Series' object has no attribute 'split'

f = lambda x: len(x["col"].split()) -1
df['totalwords'] = df.apply(f, axis=1)

结果是

AttributeError: ("'list' object has no attribute 'split'", 'occurred at index 0')

阅读 151

收藏
2020-12-20

共1个答案

一尘不染

str.split + str.len

str.len 适用于任何非数字列。

df['totalwords'] = df['col'].str.split().str.len()

str.count

如果您的单词是用单空格分隔的,则只需将空格加1即可。

df['totalwords'] = df['col'].str.count(' ') + 1

清单理解

这比您想象的要快!

df['totalwords'] = [len(x.split()) for x in df['col'].tolist()]
2020-12-20