如何用Pandas按年份和航次统计指定列的空值数量
解决Pandas分组统计空值的语法错误
你的代码出现语法错误,核心问题是groupby(['year', 'cruise_id'])之后直接拼接df['extraction_no']的写法不符合Pandas的链式调用规则,正确的写法需要在分组后指定目标列,再对列执行空值统计操作。
以下是几种可行的解决方案:
方法1:链式调用apply统计空值
直接对分组后的extraction_no列应用空值统计逻辑:
eDNADFBlanksSummary = eDNADF.groupby(['year', 'cruise_id'])['extraction_no'].apply(lambda x: x.isna().sum())
方法2:用agg自定义统计结果列名
这种方式可以直接指定统计结果的列名,输出结构更清晰:
eDNADFBlanksSummary = eDNADF.groupby(['year', 'cruise_id']).agg( extraction_no_null_count=('extraction_no', lambda x: x.isna().sum()) )
方法3:先标记空值再分组求和
先新增一列标记extraction_no是否为空,再按分组求和,逻辑更直观:
# 新增空值标记列 eDNADF['extraction_no_is_null'] = eDNADF['extraction_no'].isna() # 分组统计空值数量 eDNADFBlanksSummary = eDNADF.groupby(['year', 'cruise_id'])['extraction_no_is_null'].sum()
内容的提问来源于stack exchange,提问作者Brandon Feole
相关产品推荐
相关产品推荐

