Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算数据帧中特定单词的出现次数_Python_Pandas - Fatal编程技术网

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

Python 计算数据帧中特定单词的出现次数,python,pandas,Python,Pandas,我有一个带有列标记的数据帧,该列包含一个字符串。 对于数据帧每一行的标记列中的字符串,我想计算某些单词出现的次数 输入: 0 ['uno', 'dos', 'one', 'two', 'tres', 'quatro',... 1 ['uuh', 'sugar', 'pie', 'honey', 'bunch', 'kno... 2 ['cant', 'get', 'satisfaction', 'cant', 'get',... 3 ['woke', 'mornin',

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

输入:

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

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

问题定义不明确,请在此处进行猜测:

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']
传递给
计数器
函数,这没有意义,因为这样您正在检查字符串
中是否包含
单词
“Token”

使用
对“Token”应用lambda
,然后使用
string.count()
查找字符串中出现的单词。每个单词都需要这样做,所以使用
列表理解

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


显示输入和预期输出Hanks,这似乎有效,只是它只计算“单词”列表中的每个单词一次,我想计算这些单词在行中的次数你肯定是正确的