Pandas 数据框:如何合并 2 个数据框但仅聚合其中的 1 列,同时连接新行?
Pandas Dataframe: How to combine 2 dataframes but aggregate only 1 of the columns, while new rows get concatenated?
假设我有 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 中获取值。其他不冲突的行将被连接在一起。有没有办法在一行中实现这一目标?或者一个巧妙的方法来做到这一点会很好。
尝试:
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
假设我有 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 中获取值。其他不冲突的行将被连接在一起。有没有办法在一行中实现这一目标?或者一个巧妙的方法来做到这一点会很好。
尝试:
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