Pandas sum of two columns - dealing with nan-values correctly( pandas 两列之和-正确处理NaN值)
本文介绍了 pandas 两列之和-正确处理NaN值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在对两个PANAT列求和时,当两列中的一列是浮点型时,我希望忽略NaN值。但是,当NaN出现在两列中时,我希望在输出中保留NaN(而不是0.0)。
初始数据帧:
Surf1 Surf2
0 0
NaN 8
8 15
NaN NaN
16 14
15 7
所需输出:
Surf1 Surf2 Sum
0 0 0
NaN 8 8
8 15 23
NaN NaN NaN
16 14 30
15 7 22
已尝试代码: ->下面的代码忽略NaN-Value,但当取两个NaN-Value的和时,它在输出中给出了0.0,在这种特定情况下,我希望将其保留为NaN,以使这些空值与求和后实际为0的值分开。
import pandas as pd
import numpy as np
data = pd.DataFrame({"Surf1": [10,np.nan,8,np.nan,16,15], "Surf2": [22,8,15,np.nan,14,7]})
print(data)
data.loc[:,'Sum'] = data.loc[:,['Surf1','Surf2']].sum(axis=1)
print(data)
推荐答案
来自documentation pandas.DataFrame.sum
默认情况下,空系列或全NA系列的总和为0。
pd.Series([]).sum()#min_count=0是默认的0.0
这可以通过MIN_COUNT参数进行控制。例如,如果希望空数列的和为NaN,则传递min_count=1。
将代码更改为
data.loc[:,'Sum'] = data.loc[:,['Surf1','Surf2']].sum(axis=1, min_count=1)
输出
Surf1 Surf2
0 10.0 22.0
1 NaN 8.0
2 8.0 15.0
3 NaN NaN
4 16.0 14.0
5 15.0 7.0
Surf1 Surf2 Sum
0 10.0 22.0 32.0
1 NaN 8.0 8.0
2 8.0 15.0 23.0
3 NaN NaN NaN
4 16.0 14.0 30.0
5 15.0 7.0 22.0
这篇关于 pandas 两列之和-正确处理NaN值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:pandas 两列之和-正确处理NaN值
基础教程推荐
猜你喜欢
- 如何在Python中绘制多元函数? 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01