根据Pandas中的另一列连接一组列值

时间:2016-07-25 04:04:31

标签: python pandas

鉴于Pandas数据框中有一些标记系列,请说 Name Villain

假设数据框的值如下:
姓名:{'蝙蝠侠','蝙蝠侠''蜘蛛侠'蜘蛛侠''蜘蛛侠'蜘蛛侠'} 恶棍:{' Joker',' Bane',' Green Goblin'' Electro',&#39 ;毒液',' Octopus博士'}

以上数据框总共有2个系列(或列),每个系列有6个数据点。

现在,根据 Name ,我想连接3个列: FirstName,LastName,LoveInterest 到每个数据点。

其结果增加了布鲁斯;韦恩;猫女'到名为蝙蝠侠的每一行。和彼得;帕克; MaryJane'到名为蜘蛛侠的每一行。

最终结果应该是一个包含5列(系列)和每行6行的数据帧。

1 个答案:

答案 0 :(得分:2)

这是一种经典的内连接方案。在pandas中,使用merge模块级函数:

In [13]: df1
Out[13]: 
        Name       Villain
0     Batman         Joker
1     Batman          Bane
2  Spiderman  Green Goblin
3  Spiderman       Electro
4  Spiderman         Venom
5  Spiderman   Dr. Octopus

In [14]: df2
Out[14]: 
  FirstName LastName LoveInterest       Name
0     Bruce    Wayne     Catwoman     Batman
1     Peter   Parker     MaryJane  Spiderman

In [15]: pd.DataFrame.merge(df1,df2,on='Name')
Out[15]: 
        Name       Villain FirstName LastName LoveInterest
0     Batman         Joker     Bruce    Wayne     Catwoman
1     Batman          Bane     Bruce    Wayne     Catwoman
2  Spiderman  Green Goblin     Peter   Parker     MaryJane
3  Spiderman       Electro     Peter   Parker     MaryJane
4  Spiderman         Venom     Peter   Parker     MaryJane
5  Spiderman   Dr. Octopus     Peter   Parker     MaryJane