【发布时间】:2014-10-01 03:34:34
【问题描述】:
基本上,我只是希望能够将数据从另一个 df1“带入”到 df2,使用 df2 + 某些天的索引作为选择标准。
df1
Open High Low Close
2005-09-07 1234.50 1238.00 1231.25 1237.00
2005-09-08 1235.00 1242.75 1231.75 1238.75
2005-09-09 1237.50 1250.25 1237.50 1247.75
2005-09-12 1248.75 1251.00 1245.25 1247.00
2005-09-13 1245.25 1246.75 1237.50 1238.00
df2
Ref
2005-09-07 1
2005-09-08 2
2005-09-09 3
所需输出 = Df2
Ref 1d.Close 2d.Close 3d.Close
2005-09-07 1 1238.75 1247.75 1247.00
2005-09-08 2 1247.75 1247.00 1238.00
2005-09-09 3 1247.00 1238.00 NaN
这是我尝试过的(请不要笑):
df2['date.value'] = df2.index
df2['+1d.Date'] = df2['date.value'] + timedelta(1)
df2['1d.Close'] = df1['Close'].loc[df2['date.value']]
这种方法给了我 NaN,但如果我使用:
df2['1d.Close'] = df1['Close'].loc[df2['2005-09-07']]
这会给我 1238.75,这对于示例的第一行是正确的。 但由于某种原因,它在公式中不起作用。
最后说明:
- df2 上的日期并不总是连续的
- timedelta 的“长度”也是可变的,并不总是连续的。
感谢您的帮助
【问题讨论】:
-
你试过 pd.merge() 吗?
-
@Inox 我没有。现在我会尝试。感谢您的建议。
标签: python python-2.7 pandas time-series dataframe