我有三个数据框。 df1
用于总结基于df2
和df3
的信息,如下所示:
对于ID
中的每个df2
,我想计算它从Value
中有df3
的次数,并在Result
列中返回计数的df1
。
df1
ID Result
1 2
2 2
3 2
4 1
6 2
8 0
10 1
df2
ID Value
1 A
1 A
1 F
2 B
2 C
3 D
3 D
4 C
5 A
6 A
6 B
7 C
7 D
8 E
8 F
8 G
9 A
9 B
9 C
10 D
df3
ValueList
A
B
C
D
我尝试使用df3
基于isin
来过滤行,但这仅返回了一些行,而某些行的值不在df3
df = df2[df2['Value'].isin(df3['Value'])].drop(['Value'], axis = 1)
答案 0 :(得分:1)
也许更简单的方法是总结按ID分组的布尔isin
系列:
In [11]: df2['Value'].isin(df3['ValueList']).groupby(df2["ID"]).sum()
Out[11]:
ID
1 2.0
2 2.0
3 2.0
4 1.0
5 1.0
6 2.0
7 2.0
8 0.0
9 3.0
10 1.0
Name: Value, dtype: float64
注意:您可以使用.sum(type='int64')
来确保它是ind dtype。