簡體   English   中英

基於與 Pandas 的 2 列匹配行合並 2 個數據框

[英]Merge 2 data frames based on matching rows of 2 columns with Pandas

我有一個非常重要的問題需要為一個項目解決!

所以我有 2 個看起來像這樣的數據框:第一個數據框是:

Date            Winner      Loser         Tournament
2007-01-01      Luczak P.   Hrbaty D.     Grandslam
2007-01-02      Serra F.    Johansson J.  Grandslam
2007-01-02      ......      ......

第二個數據框是:

Date            Winner      Loser          Tournament
2007-05-28      Federer R.  Russel M.      Grandslam
2007-05-28      Ascione T.  Cilic M.       Grandslam
2007-05-28      ......      ......

即使第一個從 2007-01-01 開始,另一個從 2007-05-28 開始,這兩個數據幀的行數相同,對應於同一時期的相同匹配項。 我通過查看我為構建兩個數據框(來自不同來源)而導入的 excel 文件進行了檢查。

問題是一個 Dataframe(第一個)為我提供了每場比賽的確切日期,而另一個 Dataframe(第二個)將每一行的日期設置為比賽的開始時間,而不是比賽的確切日期。 所以我無法根據日期值合並兩個數據框。

但是,我肯定知道每一行的獲勝者和失敗者是相同的,所以我想根據獲勝者和玩家相同的行合並兩個數據幀

有誰知道我怎么能做到這一點? 提前致謝!

你可以通過merge_asof來做到:

df = pd.merge_asof(df1.sort_values('Date'), 
                   df2.sort_values('Date'), on='Date', by=['Winner','Loser'])
df= pd.merge(df1,df2,how='inner',left_on=['Winner','Loser'],right_on=['Winner','Loser'])

暫無
暫無

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

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