Pandas求和保留NaN值:多列求和时保留空值的实现方案
解决DataFrame多列求和时全NaN行返回NaN的问题
现有如下DataFrame表格:
A B C 1.0 1.5 Baseline NaN NaN Baseline 2.0 NaN Baseline 希望在A、B列后插入Sum列,为两列的求和结果,预期全NaN行的Sum值为NaN。尝试代码
df.insert(2, 'Sum', df[['A', 'B']].sum(axis=1))后,全NaN行Sum值为0.0,不符合预期。因涉及多列求和,不想使用冗长公式,且浮点列无法用fillna('')方案,寻求简洁实现方法。
直接利用sum()方法的min_count参数即可实现需求,该参数指定计算求和时至少需要的非NaN值数量,当非NaN值数量不足时返回NaN:
df.insert(2, 'Sum', df[['A', 'B']].sum(axis=1, min_count=1))
效果说明
- 对于包含至少一个非NaN值的行,正常返回两列的求和结果(自动忽略单个NaN)
- 对于A、B列全为NaN的行,返回NaN,符合预期
验证后的结果表格:
| A | B | Sum | C |
|---|---|---|---|
| 1.0 | 1.5 | 2.5 | Baseline |
| NaN | NaN | NaN | Baseline |
| 2.0 | NaN | 2.0 | Baseline |
内容的提问来源于stack exchange,提问作者Kumar Arunachal
相关产品推荐
相关产品推荐

