我的数据看起来像
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
字段。
有什么建议吗?
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 |