我有两个pandas数据帧,都是带有datetime条目的索引。 df1
具有非唯一时间索引,而df2
具有唯一时间索引。我想以下列方式向df2.a
添加一列df1
:对于时间戳为df1
的{{1}}中的每一行,ts
应包含最新的一行时间戳小于df1.a
的{{1}}的值。
例如,假设df2.a
每分钟都有一次采样,ts
中有时间戳为df2
,08:00:15
,08:00:47
的行。在这种情况下,我希望08:02:35
的值用于前两行,df1
用于第三行。df2.a[08:00:00]
用于第三行。我怎么能这样做?
答案 0 :(得分:2)
您正在描述asof-join,这只是released in pandas 0.19。
pd.merge(df1, df2, left_on='ts', right_on='a')
答案 1 :(得分:1)
应用于df1的行,使用ffill在df2上重新索引。
df1['df2.a'] = df1.apply(lambda x: pd.Series(df2.a.reindex([x.name]).ffill().values), axis=1)