我有一个以下结构的数据框,此结构对此问题进行了简化。

  A          B   C   D   E
0 2014/01/01 nan nan 0.2 nan
1 2014/01/01 0.1 nan nan nan
2 2014/01/01 nan 0.3 nan 0.7
3 2014/01/02 nan 0.4 nan nan
4 2014/01/02 0.5 nan 0.6 0.8


我在这里获得的是几天中多个时间戳上的一系列读数。列B,C,D和E代表不同的位置。设置我正在读取的数据,以便在指定的时间戳记下它从某些位置获取数据并为其他位置填充nan值。

我想做的是按时间戳将数据分组,这可以通过.GroupBy()命令轻松完成。我希望从那里开始,用以后的行中获取的有效值覆盖分组数据中的nan值,以便获得以下结果。

  A          B   C   D   E
0 2014/01/01 0.1 0.3 0.2 0.7
1 2014/01/02 0.5 0.4 0.6 0.8


我该如何实现这一目标?

最佳答案

尝试使用df.groupbyDataFrameGroupBy.agg

In [528]: df.groupby('A', as_index=False, sort=False).agg(np.nansum)
Out[528]:
            A    B    C    D    E
0  2014/01/01  0.1  0.3  0.2  0.7
1  2014/01/02  0.5  0.4  0.6  0.8




DataFrameGroupBy.sum的较短版本(感谢MaxU!):

In [537]: df.groupby('A', as_index=False, sort=False).sum()
Out[537]:
            A    B    C    D    E
0  2014/01/01  0.1  0.3  0.2  0.7
1  2014/01/02  0.5  0.4  0.6  0.8

07-24 09:53