【问题标题】:Concatenate a set of column values based on another column in Pandas根据 Pandas 中的另一列连接一组列值
【发布时间】:2016-07-25 04:04:30
【问题描述】:

给定一个 Pandas 数据框,其中包含一些标签系列,比如 NameVillain

假设数据框具有以下值:
名称:{'Batman', 'Batman', 'Spiderman', 'Spiderman', 'Spiderman', 'Spiderman'}
反派:{'Joker'、'Bane'、'Green Goblin'、'Electro'、'Venom'、'Dr Octopus'}

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

现在,基于 Name,我想将另外 3 列连接:FirstName、LastName、LoveInterest 到每个数据点。

结果加上'Bruce;韦恩;猫女'到每行名称为蝙蝠侠。和'彼得;帕克; MaryJane' 到名称为蜘蛛侠的每一行。

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

【问题讨论】:

  • 在 pandas 中这被称为 merge

标签: python pandas


【解决方案1】:

这是一个经典的内连接场景。在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 这取决于您要完成的工作。阅读文档,特别是如果您不熟悉 SQL 连接:pandas.pydata.org/pandas-docs/stable/…
  • 非常适合我!谢谢!
猜你喜欢
  • 2017-12-31
  • 2018-04-15
  • 2020-01-11
  • 2018-08-16
  • 2019-04-04
  • 1970-01-01
  • 2018-09-09
  • 2020-04-16
相关资源
最近更新 更多