热线电话:13121318867

登录
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.0000
0
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子