如何按条件计数组中的值?



我有一个dataframe,它最初是由2个dataframe -launches.merge(dropped,on=('id',how='left')构建的,所以结果我得到

id name colour dropped
1   K    pink    1
2   K    red     1
3   L    blue    1
4   M    red    NaN
5   K    pink    1
6   K    pink   NaN

where列drop来自带drop的数据框(这是一个标志)结果我想得到这样的数据帧

name colour launches  dropped
K    pink    3          2
K    red     1          1
L    blue    1          1
M    red     1          0

我试了下面的

df = d.groupby(['name','colour']).count()

您可以使用命名聚合分别执行计数和求和:

(df.groupby(['name', 'colour'])
.agg(launches = ('dropped', 'size'), 
dropped = ('dropped', 'sum'))
.reset_index()
)

name colour    launches  dropped
K    pink           3      2.0
red            1      1.0
L    blue           1      1.0
M    red            1      0.0

另一个选项,感谢@HenryEcker,是使用计数,而不是求和,因为count忽略空值,并返回整数:

(df.groupby(['name', 'colour'])
.agg(launches=('dropped', 'size'), 
dropped=('dropped', 'count'))
.reset_index()
)
Out[135]:

name colour  launches  dropped
K    pink           3        2
red            1        1
L    blue           1        1
M    red            1        0

相关内容

  • 没有找到相关文章

最新更新