按日期对行进行分组并覆盖 NaN 值
Group rows by date and overwrite NaN values
我有一个以下结构的数据框,针对这个问题进行了简化。
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
你可以尝试使用 pandas
first
df.groupby('A', as_index=False).first()
A B C D E
0 1/1/2014 0.1 0.3 0.2 0.7
1 1/2/2014 0.5 0.4 0.6 0.8
我有一个以下结构的数据框,针对这个问题进行了简化。
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
你可以尝试使用 pandas
first
df.groupby('A', as_index=False).first()
A B C D E
0 1/1/2014 0.1 0.3 0.2 0.7
1 1/2/2014 0.5 0.4 0.6 0.8