我有一个以下结构的数据框,此结构对此问题进行了简化。
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.groupby
和DataFrameGroupBy.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