我有一个Pandas数据框,其中一列包含文本。我想得到一个独特的单词列表出现在整个列(空格是唯一的分割)。
import pandas as pd
r1=['My nickname is ft.jgt','Someone is going to my place']
df=pd.DataFrame(r1,columns=['text'])
输出应该如下所示:
['my','nickname','is','ft.jgt','someone','going','to','place']
它不会伤害得到一个计数以及,但它不是必需的。
9条答案
按热度按时间igetnqfo1#
使用
set
创建唯一元素序列。对
df
进行一些清理,以获得小写字符串并拆分:此列中的每个列表都可以传递给
set.update
函数以获得唯一的值。使用apply
执行以下操作:或者与
Counter()
一起使用,来自评论:kninwzqo2#
如果你想从DataFrame构造中执行此操作:
如果您想要更灵活的标记化,请使用
nltk
及其tokenize
n9vozmp43#
使用
collections.Counter
:1tu0hz3e4#
基于@Ofir Israel的回答,具体到Pandas:
会给予你你想要的,这将文本列系列值转换为列表,分割空间和计数的示例。
0kjbasz65#
pcww981p6#
下面是在92816行 Dataframe 上提出的三种解决方案(跳过转换到列表)的时序:
323 ms ± 4.46 ms/循环(平均值±标准差)运行7次,每次循环10次)
316 ms ± 4.22 ms/循环(平均值±标准差)运行7次,每次循环10次)
365 ms ± 2.5 ms/循环(平均值±标准差)运行7次,每次循环10次)
13561
13561
13561
我也尝试了Pandas唯一的方法,但它花了更长的时间,并使用了> 25 GB的RAM,使我的32 GB笔记本电脑交换。
其他人都很快。我会使用解决方案1作为一个一行,或3如果字数是必要的。
yfwxisqw7#
TL;DR
使用
collections.Counter
获取dataframe中列中唯一字的计数(不含停止字)给出:
代码:
[out]:
bzzcjhmw8#
我还没有在这里看到这个方法,它是纯pandas,使用了pd.DataFrame.explode()。Explode将列表中的每个元素转换为与原始行共享ID的行。
vlf7wbxs9#
如果Dataframe有'a',' b','c'等列,并且要计算每列的不同单词,则可以使用