[英]How to merge two DataFrames with DatetimeIndex preserved in pandas?
[英]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.