我有一个熊猫数据帧,我想做2克的频率基于一个文本列。在
text_column
This is a book
This is a book that is read
This is a book but he doesn't think this is a book
最终的结果是2克的频率计数,但频率是计算每个文档中是否有2克,而不是2克计数。在
所以部分结果是
^{pr2}$“这是”和“一本书”出现在所有的3个文本中,尽管第3个文本中每一个有2个,但由于我只关心这样的2克出现了多少个文档,所以计数是3所以不是4。在
你知道我怎么做吗?在
谢谢你
这很c风格,但很管用。想法是跟踪每个文档的“current”双元组,确保每个文档只添加一次(
cur_bigrams = set()
),并且在每个文档之后,增加一个全局频率计数器(bigram_freq
),如果它在当前文档中。然后用bigram_freq
中的信息(跨文档的全局计数器)构建一个新的数据帧。在输出:
^{pr2}$您可能可以使用功能性更强的样式和/或列表理解功能,对代码进行适当的删减。我把这个练习留给读者。在
Pythonic的答案(写得很一般,所以可以应用到文件/数据帧/任何东西):
现在
c
保持每2克的频率。在说明:
split
排列成一个列表。在zip()
返回长度为2(2克)的元组上的迭代器。在set()
,以消除冗余。在collections.Counter()
对象,该对象跟踪每个元组出现的次数。您需要import collections
才能使用它。在是的,Python很棒。在
相关问题 更多 >
编程相关推荐