统计其他列中有多个条件的 NaN 单列

Count NaN Single Column with Multiple Conditions in Other Columns

我似乎无法解决这个问题,尝试了很多不同的事情,显然我在网上找不到答案。我的数据在单列“数据”中有值,我需要根据其他两列中的一组条件对该列中 NaN 的出现进行求和或计数,例如类似于我的以下数据:

    site     data      day     month   year
0   Red      NaN        20     1       2020
1   Red      5.6        31     1       2020
2   Red      NaN         6     1       2020
3   Red      NaN         9     2       2020
3   Blue     4.5        14     1       2020
4   Blue     6.2        19     2       2020
5   Blue     NaN        11     2       2020

结果应该是这样的:

   site    month    count    sumNaN  
0  Red     1        3        2
1  Red     2        1        1
2  Blue    1        1        0
3  Blue    2        2        1

非常感谢。

尝试:

(df.assign(data=df['data'].isna())
   .groupby(['site','month'])
   ['data'].agg(['count','sum'])
   .reset_index()
)

输出:

   site  month  count  sum
0  Blue      1      1    0
1  Blue      2      2    1
2   Red      1      3    2
3   Red      2      1    1

您可以在 agg:

中使用命名聚合
(df.groupby(['site', 'month'], as_index = False)
   .agg(count=('data', 'size'), 
        sumNaN=('data', lambda df: df.isna().sum())
        )
 )

   site  month  count  sumNaN
0  Blue      1      1     0.0
1  Blue      2      2     1.0
2   Red      1      3     2.0
3   Red      2      1     1.0