我正在尝试合并列上的两个数据框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')结果:它确实创建了额外的行,但它总是包含一个完全不同的“check_code”,第二个是正确的“check_code”。例如,这样的事情:channel ID artist_title check_codeNOW 301 J. Balvin - Ay Vamos ABE000149NOW 301 J. Balvin - Ay Vamos YH4763523由于两列都包含重复的值,我猜我需要做除合并之外的其他事情?我怎样才能最好地实现上述目标?补充: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
提交
取消