.agg Sum 将 NaN 转换为 0

tau*_*rus 5 python pandas

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

    df = df.groupby(df.index // 3).agg({'A': 'sum', 'B':'sum'})
Run Code Online (Sandbox Code Playgroud)

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

例如,如果我有这个 df:

    df = df.groupby(df.index // 3).agg({'A': 'sum', 'B':'sum'})
Run Code Online (Sandbox Code Playgroud)

我希望新的 df 是:

Index A   B
0     NaN 3
1     6   0
Run Code Online (Sandbox Code Playgroud)

但我当前的代码输出:

Index A   B
0     0   3
1     6   0
Run Code Online (Sandbox Code Playgroud)

Kar*_*rya 2

df.groupby(df.index // 3)['A', 'B'].mean()
Run Code Online (Sandbox Code Playgroud)

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

如果您想求总和,请查看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)})
Run Code Online (Sandbox Code Playgroud)