我正试图在数据框中创建一个新列,其中包含相应行的单词count。我要看的是单词的总数,而不是每个单词的频率。我以为有一个简单/快速的方法来完成这项常见的任务,但在四处搜索并阅读了一些这样的帖子(1,2,3,4)之后,我陷入了困境。我已经尝试了linked 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')
这是使用^{} 和^{} 的一种方法:
上面假设
df['col']
是一系列字符串。示例:
str.split
+str.len
str.len
对于任何非数值列都很有效。str.count
如果您的单词是单空格分隔的,您可以简单地将空格数加1。
列表理解
这比你想象的要快!
以下是使用
.apply()
的方法:示例
鉴于此
df
:在应用
.apply()
之后注意:正如注释和this answer中指出的,
.apply
不一定是最快的方法。如果速度很重要,最好使用@cᴏʟᴅsᴘᴇᴇᴅ's方法之一。相关问题 更多 >
编程相关推荐