Python熊猫与多个值合并

时间:2018-11-14 16:20:32

标签: python python-3.x pandas dataframe

我正在尝试合并列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中。如果没有,那我就不要了。

1 个答案:

答案 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中时,我的工作陷入混乱,因此删除了我的结果,并且永久删除了