Pandas:添加包含最新值

时间:2016-06-30 19:01:25

标签: python datetime pandas

我有两个pandas数据帧,都是带有datetime条目的索引。 df1具有非唯一时间索引,而df2具有唯一时间索引。我想以下列方式向df2.a添加一列df1:对于时间戳为df1的{​​{1}}中的每一行,ts应包含最新的一行时间戳小于df1.a的{​​{1}}的值。

例如,假设df2.a每分钟都有一次采样,ts中有时间戳为df208:00:1508:00:47的行。在这种情况下,我希望08:02:35的值用于前两行,df1用于第三行。df2.a[08:00:00]用于第三行。我怎么能这样做?

2 个答案:

答案 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)