在Pandas中,根据另一列连接一组列值

6
给定一个Pandas dataframe,其中包含一些标签化的系列,比如名称恶棍
假设数据框具有以下值:
名称: {'Batman', 'Batman', 'Spiderman', 'Spiderman', 'Spiderman', 'Spiderman'}
恶棍: {'Joker', 'Bane', 'Green Goblin', 'Electro', 'Venom', 'Dr Octopus'}
以上数据框总共有2个系列(或列),每个系列都有6个数据点。
现在,基于名称,我想将3个更多的列连接起来: 名字,姓氏,爱人到每个数据点上。
结果是将Bruce; Wayne; Catwoman 添加到每一行的名称为Batman的数据中。并将Peter; Parker; MaryJane添加到每一行的名称为Spiderman的数据中。
最终结果应该是一个包含5列(series)和6行的数据框。

在 Pandas 中,这被称为“合并”。 - maxymoo
1个回答

10

这是一个经典的内连接场景。在 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

如果合并的是两列,比如姓名和性别,那么它还算是同样的合并吗? - Yaitzme
@Yaitzme 这取决于你想要完成什么任务。如果你不熟悉SQL连接,请阅读文档:http://pandas.pydata.org/pandas-docs/stable/merging.html#database-style-dataframe-joining-merging - juanpa.arrivillaga
非常适用!谢谢你! - Yaitzme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接