我必须使用不同的数据框,两者都包含一列对象类型。两列都存在值的组合。我想知道第二个数据帧中的组合在第一个数据帧中的组合出现的频率。
我尝试了以下各种变化:
df1.Column1.str.count(df2['Column2'])
但我不断收到错误消息:
TypeError: 'Series' objects are mutable, thus they cannot be hashed
df1 =
Index Column1
0 BIER, VRUCHTENSAP, SMOOTHIE
1 FRISDRANK, KOFFIE
2 KOFFIE, WATER
3 KOFFIE, THEE
4 FRISDRANK, KOFFIE
5 HOT CHOCOLATE, KOFFIE
6 KOFFIE, THEE
7 FRISDRANK, KOFFIE
8 BIER, FRISDRANK
9 FRISDRANK, KOFFIE
10 BIER, MIX DRINKS, THEE
11 KOFFIE, THEE
df2 =
Index Column2
1 KOFFIE, SPECIAAL BIER
2 KOFFIE, THEE
3 KOFFIE, WATER
预期结果是一个数据帧,其中显示了df2中值的计数以及它们在df1中出现的时间:
Index Count
KOFFIE, SPECIAAL BIER 0
KOFFIE, THEE 3
KOFFIE, WATER 1
我希望有人能帮助我。
答案 0 :(得分:2)
如果您要查找完全匹配项,则可以使用以下列表理解,使用pd.Series.eq
计算完全匹配项的数量:
counts = [df1.Column1.eq(i).sum() for i in df2.Column2]
pd.DataFrame({'Count':counts}, df2.Column2)
Count
Column2
KOFFIE, SPECIAAL BIER 0
KOFFIE, THEE 3
KOFFIE, WATERE 1
答案 1 :(得分:0)
.value_counts
+ .reindex
适用于完全匹配。
df1.Column1.value_counts().reindex(df2.Column2).fillna(0).astype(int)
Column2
KOFFIE, SPECIAAL BIER 0
KOFFIE, THEE 3
KOFFIE, WATER 1
Name: Column1, dtype: int32