【发布时间】:2019-06-22 09:41:28
【问题描述】:
我有两个数据框。
df1 包含数字和时间戳。这是一个非常大的集合。
df1.head()
Out[292]:
2016-08-31 08:09:00 1.0
2016-08-31 08:11:00 7.0
2016-08-31 08:14:00 90.0
df2 包含区间
d2.head()
Out[292]:
start stop C
2016-08-31 08:09:00 2016-08-31 08:12:00 'a'
2016-08-31 08:13:00 2016-08-31 08:20:00 'b'
2016-08-31 08:20:00 2016-08-31 08:45:00 'c'
我想在df1 中添加一个新列C,这样C 的值就对应于df2 中包含df1 索引的区间的值。
预期结果
df1.head()
Out[292]: C
2016-08-31 08:09:00 1.0 'a'
2016-08-31 08:11:00 7.0 'a'
2016-08-31 08:14:00 90.0 'b'
到目前为止,我已经尝试过:
df1.loc[:,'C']=df1.index.map(lambda i:df2[np.logical_and(i>df2.starti<df2.stop)].C)
但在某些情况下,当 df2 的区间列表中缺少索引值时,它的效率极低并且崩溃。
如何有效地做到这一点?
【问题讨论】:
标签: python pandas datetime merge timestamp