簡體   English   中英

從熊貓中的不同ts數據框中選擇數據

[英]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,這對於示例的第一行是正確的。 但是由於某種原因,它在公式中不起作用。

最后說明:

  • df2上的日期並非總是連續的
  • timedelta的“長度”也是可變的,並不總是連續的。

謝謝您的幫助

我要做的是創建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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM