我試圖匹配三列上的兩個數據幀,即「ticker」,「year」和「quarter」。雖然第一個數據集包含兩個觀測值(即兩行),每個季度,每年,每季度,第二個數據集僅包含一行......特別是,第一個數據幀始終在同一季度捕獲兩個不同的揚聲器,而第二個數據幀僅捕獲公司信息。現在,我想匹配數據幀,以便同一公司季度內第一個數據幀的兩行中的每一行都與第二個數據幀中的相關行合併。連接兩個數據幀,其中一個數據幀中的每一行與其他數據幀中的兩行匹配
我的數據如下所示: DF
ticker year quarter exec_lname jobposition
XX 2009 3 A CEO
XX 2009 3 B CFO
XX 2009 4 A CEO
XX 2009 4 B CFO
YY 2007 1 C CEO
YY 2007 1 D CFO
YY 2007 2 C CEO
YY 2007 2 D CFO
ZZ 2008 3 F CEO
ZZ 2008 3 G CFO
dfnew
ticker year quarter eps calldate
XX 2009 3 x Mar
XX 2009 4 y Apr
YY 2007 1 z Feb
YY 2007 2 a Jan
ZZ 2008 3 b Dec
最後,它應該是這樣的:
ticker year quarter exec_lname jobposition eps calldate
XX 2009 3 A CEO x Mar
XX 2009 3 B CFO x Mar
XX 2009 4 A CEO y Apr
XX 2009 4 B CFO y Apr
YY 2007 1 C CEO z Feb
YY 2007 1 D CFO z Feb
YY 2007 2 C CEO a Jan
YY 2007 2 D CFO a Jan
ZZ 2008 3 F CEO b Dec
ZZ 2008 3 G CFO b Dec
我想:
dfjoin = pd.merge(dfnew, df, how='left', left_on=['ticker', "year", "quarter"], right_on = ['ticker', "year", "quarter"])
但它返回新的數據集包含所有正確的行和列,但列eps和calldate完全充滿了NaN。可能這是因爲我想將兩行合併到df中?問題不在於合併多個鍵 - 問題可能是在第一個數據框中,我總是有兩行,具有相同的ticker/year/quarter組合。
我希望有人能幫助我! 謝謝! 朱莉婭
只需使用df1.merge(DF2,上= ['ticker','year','quarter']) – Vaishali
[基於Python熊貓中的多個鍵合併兩個表]的可能的副本(https://stackoverflow.com/questions/32277473/merge-two-tables-based在python熊貓) – Vaishali
這使我的所有列,但0行... – Julia