我正在嘗試合并列上的兩個數據框artist_title。但是,重復值可能在兩列中。由于我正在處理大型數據集和大型列,因此我稍微簡化了數據框。在 中df1,artist_title可以提到與下面的示例'J. Balvin - Ay Vamos'。在 中df2,'J 也可以有多個值。Balvin - Ay Vamos'。如果它artist_title從df1in 中找到df2,則它提供check_code. 當有多個值要從 返回時df2,我希望復制一行df1以添加附加值,check_code以便我可以查看兩個(所有)可用代碼。df1:channel ID artist_titleNOW 301 J. Balvin - Ay VamosNOW 302 Troye Sivan - BloomNOW 303 Christina Milian - Dip It LowNOW 304 Lorde - RoyalsTRENDING 301 J. Balvin - Ay VamosTRENDING 305 Mase - Welcome BackCHILL 306 Bastille - Pompeiidf2:artist_title check_codeThe Doors - Touch Me AD9823459Ricky Martin - She Bangs SD8845623 Spice Girls - Wannabe SDF945345Daft Punk - Da Funk KI9023475J. Balvin - Ay Vamos URY734586J. Balvin - Ay Vamos YH4763523Troye Sivan - Bloom EH7623495期望的結果:channel ID artist_title check_codeNOW 301 J. Balvin - Ay Vamos URY734586NOW 301 J. Balvin - Ay Vamos YH4763523NOW 302 Troye Sivan - Bloom EH7623495NOW 303 Christina Milian - Dip It Low NaNNOW 304 Lorde - Royals NaNTRENDING 301 J. Balvin - Ay Vamos URY734586TRENDING 301 J. Balvin - Ay Vamos YH4763523TRENDING 305 Mase - Welcome Back NaNCHILL 306 Bastille - Pompeii NaN我嘗試合并:pd.merge(df1, df2, on ='artist_title', how = 'left')結果:它確實創(chuàng)建了額外的行,但它總是包含一個完全不同的“check_code”,第二個是正確的“check_code”。例如,這樣的事情:channel ID artist_title check_codeNOW 301 J. Balvin - Ay Vamos ABE000149NOW 301 J. Balvin - Ay Vamos YH4763523由于兩列都包含重復的值,我猜我需要做除合并之外的其他事情?我怎樣才能最好地實現(xiàn)上述目標?補充:df1有 4405 個值,df2有 177806 個值。我只希望有值的df2,如果他們都在df1。如果沒有,那我不要他們。
1 回答

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
你可以制作一個字典來映射。
mapper = {}
def make_map(row):
mapper[row['artist_title']] = row['check_code']
df2.apply(make_map,axis=1)
df['check_code'] = df['artist_title'].map(mapper)
哪個應該返回預期的結果(刪除了我的結果,因為當我將信息傳輸到 python 時我搞砸了,這花了很長時間)
添加回答
舉報
0/150
提交
取消