我正在尝试将 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)
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)
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |