[英]Selecting data from different ts dataframes in Pandas
基本上,我只是希望能夠使用另一天的df2索引作為選擇標准,將數據從另一個df1“帶來”到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,這對於示例的第一行是正確的。 但是由於某種原因,它在公式中不起作用。
最后說明:
謝謝您的幫助
我要做的是創建3個新的數據框(如果您總是要移動1、2和3天)。 每個索引都是df1,只是索引分別偏移了1天,2天和3天。
df_1 = df
df_1.index = df_1.index + 1 #not sure if that is the right calculation
重復df_2和df_3(使用+2和+3)
然后,我將重命名每個數據框的列,並刪除無用的列
del df_1['Open']
del df_1['High']
del df_1['Low']
df_1.columns = ['d1Close']
再次重復df_2和df_3。
然后合並:
Df2 = pd.merge(df2,df_1,how = 'left', left_index = True, right_index = True)
並重復df_2和df_3(但對於這些重復,請使用pd.merge(Df2,...)。
這種合並意味着左連接(您將保留df2中的所有值,無論df_1表中是否存在匹配項),您都將在索引上進行合並(使用索引作為鍵)
我想並不是所有的方法都能完美地工作,但這就是想法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.