我试图在一个数据框中创建一个新列,其中包含相应行的字数统计。我在寻找的是单词的总数,而不是每个不同单词的出现频率。我认为会有一个简单/快速的方法来做到这一点共同的任务,但周围的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')
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()]