gpt4 book ai didi

python - 在算术运算中将 NaN 视为零?

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:27 25 4
gpt4 key购买 nike

这是我正在努力处理的那种事情的一个简单示例:

In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: test = pd.DataFrame(np.random.randn(4,4),columns=list('ABCD'))
In [4]: for i in range(4):
....: test.iloc[i,i] = np.nan

In [5]: test
Out[5]:
A B C D
0 NaN 0.136841 -0.854138 -1.890888
1 -1.261724 NaN 0.875647 1.312823
2 1.130999 -0.208402 NaN 0.256644
3 -0.158458 -0.305250 0.902756 NaN

现在,如果我使用 sum 对行求和,所有 NaN 值都被视为零:

In [6]: test['Sum'] = test.loc[:,'A':'D'].sum(axis=1)

In [7]: test
Out[7]:
A B C D Sum
0 NaN 0.136841 -0.854138 -1.890888 -2.608185
1 -1.261724 NaN 0.875647 1.312823 0.926745
2 1.130999 -0.208402 NaN 0.256644 1.179241
3 -0.158458 -0.305250 0.902756 NaN 0.439048

但就我而言,我可能需要先对值做一些工作;例如缩放它们:

In [8]: test['Sum2'] = test.A + test.B/2 - test.C/3 + test.D

In [9]: test
Out[9]:
A B C D Sum Sum2
0 NaN 0.136841 -0.854138 -1.890888 -2.608185 NaN
1 -1.261724 NaN 0.875647 1.312823 0.926745 NaN
2 1.130999 -0.208402 NaN 0.256644 1.179241 NaN
3 -0.158458 -0.305250 0.902756 NaN 0.439048 NaN

如您所见,NaN 值会传递到算术中以产生 NaN 输出,这正是您所期望的。

现在,我不想用零替换数据框中的所有 NaN 值:区分零和 NaN 对我很有帮助。我可以用其他东西替换 NaN:我正在处理大量学生成绩,我需要区分零分和 NaN我用来表示未尝试执行特定评估任务的时刻。 (它取代了传统电子表格中的空白单元格。)但是无论我用什么替换 NaN 值,它都需要是可以在我可能的操作中被视为零的东西履行。我在这里有什么选择?

最佳答案

使用fillna函数

test['Sum2'] = test.A.fillna(0) + test.B.fillna(0)/2 - test.C.fillna(0)/3 + test.D.fillna(0)

关于python - 在算术运算中将 NaN 视为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com