【发布时间】:2019-10-02 03:03:59
【问题描述】:
我正在尝试聚合数据框,以便每行(每个组)有一个日期。
Cod1 Cod2 Date E A S
327 100013.0 001 2019-02-01 0.0 0.0 511.0
323 100013.0 001 2019-02-01 0.0 -14.0 NaN
336 100013.0 001 2019-02-02 0.0 -28.0 NaN
341 100013.0 001 2019-02-03 0.0 -6.0 NaN
350 100013.0 001 2019-02-03 0.0 -3.0 NaN
373 100013.0 001 2019-02-07 0.0 -15.0 0
377 100013.0 001 2019-02-07 0.0 -9.0 NaN
使用以下内容:
df = df.groupby(['Date', 'Cod1', 'Cod2'])['E','A', 'S'].sum()
我得到以下输出:
2019-02-01 100013.0 001 0.0 -14.0 511.0
2019-02-02 100013.0 001 0.0 -28.0 0.0
2019-02-03 100013.0 001 0.0 -9.0 0.0
2019-02-06 100013.0 001 0.0 -24.0 0.0
我的问题是:
- 有什么方法可以聚合保留 NaN 吗?
会有3个场景:
1 -) 同一日期的两行,最后一列具有 NaN 和非空数字:
327 100013.0 001 2019-02-01 0.0 0.0 511.0
323 100013.0 001 2019-02-01 0.0 -14.0 NaN
我希望在这种情况下始终保留该号码。
2-) 同一日期的两行,最后一列有 2 个 NaN 行
341 100013.0 001 2019-02-03 0.0 -6.0 NaN
350 100013.0 001 2019-02-03 0.0 -3.0 NaN
我希望在这种情况下始终保留 NaN。
3-) 同一日期的两行,最后一列有一个零值列和一个 NaN 列
373 100013.0 001 2019-02-07 0.0 -15.0 0
377 100013.0 001 2019-02-07 0.0 -9.0 NaN
我希望在这种情况下始终保持 0。
所以我的预期应该是这个:
2019-02-01 100013.0 001 0.0 -14.0 511.0
2019-02-02 100013.0 001 0.0 -28.0 NaN
2019-02-03 100013.0 001 0.0 -9.0 NaN
2019-02-06 100013.0 001 0.0 -24.0 0.0
【问题讨论】: