python - .agg Sum 将 NaN 转换为 0

标签 python pandas

我正在尝试将 Pandas DataFrame 放入三天的窗口中。我有两列,A 和 B,我想在每个窗口中对它们求和。我为任务编写的这段代码

    df = df.groupby(df.index // 3).agg({'A': 'sum', 'B':'sum'})

在执行此求和时将 NaN 值转换为零,但我希望它们保持为 NaN,因为我的数据具有实际的非 NaN 零值。

例如,如果我有这个 df:

df = pd.DataFrame([
     [np.nan, np.nan],
     [np.nan, 0],
     [np.nan, np.nan],
     [2,   0],
     [4 ,  0],
     [0  , 0]
], columns=['A','B'])

Index A   B
0     NaN Nan
1     NaN 3
2     NaN Nan
3     2   0
4     4   0
5     0   0

我希望新的 df 是:

Index A   B
0     NaN 3
1     6   0

但我当前的代码输出:

Index A   B
0     0   3
1     6   0

最佳答案

df.groupby(df.index // 3)['A', 'B'].mean()

上面的代码片段提供了上述示例输出。

如果你想求和,请查看 df.groupby(df.index//3)['A', 'B'].sum(min_count = 1)

另一种选择:

df.groupby(df.index // 3).agg({'A': lambda x: x.sum(skipna=False),
                           'B':lambda x: x.sum(skipna=True)})

关于python - .agg Sum 将 NaN 转换为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57515136/

相关文章:

python - .split() 和 .append 来自 .txt 文件的信息作为元组到新列表

python - 如何从图像阵列中制作彩色点阵列?

python - 将 netCDF 文件导入 Pandas 数据框

python - Pandas 使用 pivot_table 实现带有叠加条和条组的条形图

python - 根据第三列设置列中具有共同值的行的日期

python - Pandas 空数据框

python - 如何用 SQL 编写这个 Django 模型?

python - Boto 找出何时使用 Restore() 将对象从 Glacier 恢复到 S3

python - 如何根据 Python 请求轮换代理

python - Pandas :删除值等于零的行