gpt4 book ai didi

python - Pandas:对 DataFrame 的每一列进行 nansum 系列

转载 作者:行者123 更新时间:2023-11-30 22:24:45 24 4
gpt4 key购买 nike

我想对 DataFrame 的每一列求和,具有与 nansum 相同的行为:如果缺少一个组件,则返回另一个组件;如果两者都缺失,则返回 NaN/0。

测试用例:

import numpy as np
import pandas as pd

df = pd.DataFrame([[np.nan, 1], [2, 2], [3, 4]])
ts = pd.Series([1, np.nan, 4])

尝试 1(缺少一个时给出 nan):

df.add(ts, axis=0)

Out[115]:
0 1
0 NaN 2.0
1 NaN NaN
2 7.0 8.0

尝试 2(抛出错误):

df.add(ts, axis=0, fill_value=0)
NotImplementedError: fill_value 0 not supported.

预期输出:

   0  1
0 1 2
1 2 2
2 7 8

注意:我可以通过保存 NaN 的位置,用 0 填充 NaN 进行求和,并在两者都是 NaN 时设置为 NaN,但我正在寻找更好的解决方案。

最佳答案

None 之外的任何内容的

fill_value 仍在进行中,但截至目前,您必须解决此问题。执行加法,然后计算掩码以在需要时恢复 NaN

r = df.fillna(0).add(ts.fillna(0), axis=0)

m = df.isnull().__and__(ts.isnull(), axis=0).values
v = r.values
v[m] = np.nan

r[:] = v
r
0 1
0 1.0 2.0
1 2.0 2.0
2 7.0 8.0

关于python - Pandas:对 DataFrame 的每一列进行 nansum 系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47752711/

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