Python 计算数据帧A的每一行在另一个数据帧的多个元素的每一行中出现的时间
我有一个dataframe a,有一列,2009行,每行有许多元素,如:Python 计算数据帧A的每一行在另一个数据帧的多个元素的每一行中出现的时间,python,pandas,count,Python,Pandas,Count,我有一个dataframe a,有一列,2009行,每行有许多元素,如: Text 0 first, german, television,abide, called, ladies, dai... 1 party, day, hanover, cdu, first, soft, bundest... 2
Text
0 first, german, television,abide, called, ladies, dai...
1 party, day, hanover, cdu, first, soft, bundest...
2 evening,ability chancellor, merkel, berlin, israeli, ...
3 egypt, followers, opponent, president, must, v...
4 eu, commission, wants, high, youth, unemployme...
5 european, aviation, armament, company, eads, s...
....
和另一个数据帧B,1900行,每行只有一个元素
Word
0 abide
1 ability
2 able
3 abound
4 absolve
5 absorbent
6 absorption
7 abundance
....
我想计算数据帧B的所有行中的元素在数据帧A的每行中出现的次数
Word=B.Word
List=Word.tolist()
#Option 1
A.Text.str.extractall(
'({})'.format('|'.join(str(v) for v in List))
).groupby(level=0)
[0].value_counts().unstack(fill_value=0)
Option2
df=A.Text.str.extractall('({})'.format('|'.
join(map(str, List))))\
.iloc[:,0].str.get_dummies().sum(level=0)
我尝试了上面的两个选项,但结果返回了一个新的数据帧,数据帧a和数据帧B的行数都在减少。
所以,也许他们不是完成这项任务的正确方法。
有什么建议吗
提前谢谢我可能会得到你需要的东西。如果您需要dfB
中出现在dfA
每行中的项目数:
dfA.Text.str.split(',\s?', expand=True).stack().isin(dfB.Word.tolist()).groupby(level=0).sum()
dfA.Text.str.split(',\s?', expand=True).stack().value_counts().reindex(dfB.Word)
如果您需要dfB
中的项目在dfA
中的任何位置出现的次数,则为:
dfA.Text.str.split(',\s?', expand=True).stack().isin(dfB.Word.tolist()).groupby(level=0).sum()
dfA.Text.str.split(',\s?', expand=True).stack().value_counts().reindex(dfB.Word)
样本数据
代码
还有一个小问题:如果我想看到细节,我的意思是在总结之前,我想看看dfb中的每个单词在dfa的每一行中出现了多少次。我可以从您的代码中修改哪些代码。dfA.Text.str.split(',\s?',expand=True).stack().isin(dfB.Word.tolist()).groupby(level=0)。不起作用。你上面的代码真的救了我一天。谢谢