簡體   English   中英

在 DatetimeIndex 列上合並兩個 Pandas DataFrame

[英]Merge two Pandas DataFrames on their DatetimeIndex columns

我正在嘗試在 DatetimeIndex 列上合並兩個 Pandas DataFrame。 每個 df 包含重疊時期的不同每日測量數據,一天每行幾列。 我想最終在 DatetimeIndex 上合並一個 df,每行仍然有一天( 'inner' ),以及原始兩個 dfs 的所有測量列,但只有一個列用於公共日期。 只要日期是字符串,它就可以與pd.merge()一起使用,但是當我將它們轉換為日期時間時, pd.merge()告訴我改用pd.concat() 一個最小的工作示例如下所示:

df1 = pd.DataFrame(data=pd.date_range('2022-01-02','2022-01-04'), columns=['dtm'])
df1['var1'] = np.random.random(len(df1))

df2 = pd.DataFrame(data=pd.date_range('2022-01-01','2022-01-05'), columns=['dtm'])
df2['var2'] = np.random.random(len(df2))*100

print(pd.concat([df1,df2], axis=1, join='inner'))

然而,這給了我

         dtm      var1        dtm       var2
0 2022-01-02  0.942075 2022-01-01  82.021265
1 2022-01-03  0.857628 2022-01-02  62.548033
2 2022-01-04  0.432774 2022-01-03   3.883448

即,有兩個dtm列,它們的日期是偏移的。 我如何告訴pd.concat()dtm列上合並?

在兩個 DataFrame 中創建DatetimeIndex

print(pd.concat([df1.set_index('dtm'),df2.set_index('dtm')], axis=1, join='inner'))
                var1       var2
dtm                            
2022-01-02  0.801879  81.125161
2022-01-03  0.473338  89.862602
2022-01-04  0.950536  63.681588

對我來說, merge工作正常(兩個 DataFrame 中的列dtm都由日期時間填充):

print(df1.merge(df2, on='dtm'))

         dtm      var1       var2
0 2022-01-02  0.875464  11.180980
1 2022-01-03  0.282619  73.407783
2 2022-01-04  0.802322  88.379740

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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