统计数据帧中特定单词的出现次数



我有一个数据帧,它的列Token包含一个字符串。对于数据帧每行Token列中的字符串,我想计算某些单词出现的次数。

输入:

0    ['uno', 'dos', 'one', 'two', 'tres', 'quatro',...
1    ['uuh', 'sugar', 'pie', 'honey', 'bunch', 'kno...
2    ['cant', 'get', 'satisfaction', 'cant', 'get',...
3    ['woke', 'mornin', 'mind', 'mind', 'got', 'tro...

还有一堆行,但这是格式

我有一个单词列表,我想检查

words = ["uno", "dos"]

我试着做下面的

def counter(row):
return len([key for key, val in enumerate(row) if val in set(words)])
df.apply(lambda row: counter(['Token']), axis =1)

然而,这会导致错误的结果,每行为零。

预期输出:

0   4
1   5
2   2
3   1

如何将此函数正确地应用于行的每个元素,或者其他什么函数可以实现此功能。

在'Token'上使用apply lambda,然后使用string.count()查找字符串中出现的单词。每个单词都需要这样做,所以使用list comprehension

words = ["uno", "dos"]
df = pd.DataFrame({"Token":["uno dos khela uno dos","ha ama kau a","aa uno"]})
df["Token_count"] = df.Token.apply(lambda x: sum([x.count(word) for word in words]))
print(df)   
Token      Token_count
0  uno dos khela uno dos            4
1           ha ama kau a            0
2                 aa uno            1

问题定义不明确,在这里猜测:

words = ["uno", "dos"]
df = pd.DataFrame({"Token": ["A uno dos", "B dos tres", "C tres"]})
df["count"] = df.Token.apply(lambda row: len([x for x in words if x in row]))
print(df)
# Output:
Token  count
0   A uno dos      2
1  B dos tres      1
2      C tres      0

您的主要问题是将['Token']传递给Counter函数,这是没有意义的,因为像这样,您正在检查字符串"Token"中是否包含words

最新更新