我正在尝试合并列artist_title
上的两个数据框。但是,重复的值可能在两列中。当我使用大型数据集和大型列时,我稍微简化了数据框。
在df1
中,可以提及与以下示例'J中相同的artist_title
。 Balvin-Ay Vamos'。
在df2
中,'J也可以有多个值。 Balvin-Ay Vamos'。
如果它从artist_title
的{{1}}找到了df1
,则它提供了df2
。当从check_code
返回多个值时,我想从df2
复制一行以添加其他df1
,以便我可以查看(全部)可用代码。
check_code
:
df1
channel ID artist_title
NOW 301 J. Balvin - Ay Vamos
NOW 302 Troye Sivan - Bloom
NOW 303 Christina Milian - Dip It Low
NOW 304 Lorde - Royals
TRENDING 301 J. Balvin - Ay Vamos
TRENDING 305 Mase - Welcome Back
CHILL 306 Bastille - Pompeii
:
df2
所需结果:
artist_title check_code
The Doors - Touch Me AD9823459
Ricky Martin - She Bangs SD8845623
Spice Girls - Wannabe SDF945345
Daft Punk - Da Funk KI9023475
J. Balvin - Ay Vamos URY734586
J. Balvin - Ay Vamos YH4763523
Troye Sivan - Bloom EH7623495
我尝试合并:
channel ID artist_title check_code
NOW 301 J. Balvin - Ay Vamos URY734586
NOW 301 J. Balvin - Ay Vamos YH4763523
NOW 302 Troye Sivan - Bloom EH7623495
NOW 303 Christina Milian - Dip It Low NaN
NOW 304 Lorde - Royals NaN
TRENDING 301 J. Balvin - Ay Vamos URY734586
TRENDING 301 J. Balvin - Ay Vamos YH4763523
TRENDING 305 Mase - Welcome Back NaN
CHILL 306 Bastille - Pompeii NaN
结果:
它确实会创建其他行,但是它总是包含完全不同的内容的“ check_code”,第二个是正确的“ check_code”。例如,如下所示:
pd.merge(df1, df2, on ='artist_title', how = 'left')
由于两列都包含重复值,所以我猜我需要做除合并之外的其他事情?我怎样才能最好地实现上述目标?
已添加:channel ID artist_title check_code
NOW 301 J. Balvin - Ay Vamos ABE000149
NOW 301 J. Balvin - Ay Vamos YH4763523
具有4405个值,df1
具有177806个值。我只想让df2
中的值在df2
中。如果没有,那我就不要了。
答案 0 :(得分:0)
您可以制作要映射的字典。
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中时,我的工作陷入混乱,因此删除了我的结果,并且永久删除了
)