2019-01-25
阅读量:
692
根据ID和列表返回值的计数
我有三个数据帧。df1使用基于汇总信息df2和df3如下:
对于每个IDin 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)
############解决办法#######
也许更简单的方法是总结isin按ID分组的布尔系列:
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')它来确保它是int dtype






评论(0)


暂无数据
推荐帖子
0条评论
0条评论
0条评论