【发布时间】:2019-10-14 11:36:23
【问题描述】:
我正在尝试合并两个具有不同日期时间频率的数据帧,并用重复项填充缺失值。
具有分钟频率的数据帧 df1:
time
0 2017-06-01 00:00:00
1 2017-06-01 00:01:00
2 2017-06-01 00:02:00
3 2017-06-01 00:03:00
4 2017-06-01 00:04:00
每小时频率的数据帧 df2:
time2 temp hum
1 2017-06-01 00:00:00 13.5 90.0
2 2017-06-01 01:00:00 12.2 95.0
3 2017-06-01 02:00:00 11.7 96.0
4 2017-06-01 03:00:00 11.5 96.0
5 2017-06-01 04:00:00 11.1 97.0
到目前为止,我合并了这些数据框,但得到了 NaN:
m2o_merge = df1.merge(df2, left_on= 'time', right_on= 'time2', how='outer')
m2o_merge.head()
time time2 temp hum
0 2017-06-01 00:00:00 2017-06-01 13.5 90.0
1 2017-06-01 00:01:00 NaT NaN NaN
2 2017-06-01 00:02:00 NaT NaN NaN
3 2017-06-01 00:03:00 NaT NaN NaN
4 2017-06-01 00:04:00 NaT NaN NaN
我想要的数据框应该是这样的(NaN 用每小时值 df2 填充):
time temp hum
0 2017-06-01 00:00:00 13.5 90.0
1 2017-06-01 00:01:00 13.5 90.0
2 2017-06-01 00:02:00 13.5 90.0
3 2017-06-01 00:03:00 13.5 90.0
4 2017-06-01 00:04:00 13.5 90.0
...
到目前为止,我找到了这个解决方案:merge series/dataframe with different time frequencies in python,但 Datetime 列不是我的索引。有人知道怎么去吗?
【问题讨论】:
-
在您的情况下,您应该能够使用
fillna()和 ffill 方法来获得结果。然后删除 time2 列。 pandas.pydata.org/pandas-docs/stable/reference/api/… -
使用
merge_asof可能吗?