我有一个数据帧,看起来像这样:
customer sales gm%
TRC NL 3000 20
trc slgm 2000 30
TRC gmbh D 1000 40
Dinamic reg 300 10
dinamic 400 15
DINAMIC kgs italy 400 20
我想把同一家公司的行合并起来,计算销售额的总和和gm%的加权平均值,得到这样的结果:
customer sales gm%
TRC 6000 30
Dinamic 1200 15
我尝试过使用pd.concat,但使用不相似的索引不起作用。
一种可能的解决方案:
首先,通过提取名称的第一部分来转换customer
列,以便在客户名称的多个变体之间有一个公共密钥:
df["customer"] = df["customer"].apply(lambda x: x.split(" ")[0].upper())
df.head()
然后分组:
df.groupby("customer").agg({"sales":"sum", "gm%":"mean"})
输出:
sales gm%
customer
DINAMIC 1200 15
TRC 6000 30