将字符串字段聚合为独立于 GroupBy 中其他聚合的记录

问题描述 投票:0回答:1

我的数据看起来像

df1

商店 楼主
商店1 A
商店1 B
商店2 B
商店2 C

df2

商店 已售商品 价格
商店1 苹果 2
商店1 橙色 3
商店1 苹果 2
商店2 苹果 3
商店 香蕉 2

我想要得到类似的东西

商店 业主 销售数量 收入
商店1 A 3 7
B
商店2 B 2 5
C

我尝试过类似的事情:

df = df1.merge(df2, how='inner', on='Store')
df_stats = df.groupby(['Store']).agg({"Sold_Item": np.count, "Price": 'sum'})

但我不知道如何处理

Owner
字段。

有什么建议吗?

python pandas group-by aggregation
1个回答
0
投票

df2
最后一家店不应该是
"Store2
吗?

funcs = {"Sold_Item": "count", "Price": "sum"}

out = (
    df1.merge(df2, on="Store", how="inner")
        .groupby(["Store", "owner"], as_index=False).agg(funcs)  
)

out.loc[out["Store"].duplicated(),
        out.columns.difference(["owner"])] = None

# out.to_excel("file.xlsx", index=False) # or `to_csv`

输出(在 Excel 中):

商店 楼主 已售商品 价格
商店1 A 3 7
B
商店2 B 2 5
C
© www.soinside.com 2019 - 2024. All rights reserved.