【问题标题】:Pandas Dataframe: How to combine 2 dataframes but aggregate only 1 of the columns, while new rows get concatenated?Pandas Dataframe:如何组合 2 个数据帧但仅聚合 1 列,而新行被连接?
【发布时间】:2021-06-21 13:46:57
【问题描述】:

假设我有 df1

               prices    Type
name                      
ResidenceA     [1.0]     Condo
ResidenceB     [2.0]     Apartment
ResidenceC     [3.0]     Mansion

和 df2

               prices    Type
name                      
ResidenceA     [2.0]     Condo
ResidenceD     [4.0]     Mansion

我想合并 df1 和 df2 使得结果变成

               prices         Type
name
ResidenceA     [1.0, 2.0]     Condo
ResidenceB     [2.0]          Apartment
ResidenceC     [3.0]          Mansion
ResidenceD     [4.0]          Mansion

换句话说,由于 ResidenceA 在两个数据帧中,我希望得到的价格列是两个价格的聚合,但其他列(类型)只会从第一个 df 中获取值。其他不冲突的行将被连接在一起。有没有办法在一条线上实现这一目标?或者一个巧妙的方式来做到这一点会很好。

【问题讨论】:

  • 请给出生成上述两个数据框的代码(以及使用的示例数据集),以便我为您提供帮助。

标签: python pandas dataframe merge aggregate


【解决方案1】:

尝试:

out=df1.append(df2).reset_index().groupby('name').agg({'prices':'sum','Type':'first'})

out的输出:

           prices           Type
name        
ResidenceA  [1.0, 2.0]      Condo
ResidenceB  [2.0]           Apartment
ResidenceC  [3.0]           Mansion
ResidenceD  [4.0]           Mansion

【讨论】:

  • as_index 可能不是必需的。
  • @Don'tAccept 你是对的先生...谢谢你注意到 :)
猜你喜欢
  • 2012-09-01
  • 2020-06-08
  • 2019-08-29
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多