我有一个df:
Type price stock
a 2 2
b 4 1
b 3 3
a 1 2
a 3 1我想得到的结果是:
Type price*stock
a 2*2+1*2+3*1 = 9
b 4*1+3*3 = 13 我可以很容易地在Excel中完成,但是在Pandas中呢?我尝试过groupby函数,但仍然失败:
发布于 2022-04-26 07:44:32
首先是多列,然后聚合sum以提高性能:
df1 = df.price.mul(df.stock).groupby(df.Type).sum().reset_index(name='price*stock')
print (df1)
Type price*stock
0 a 9
1 b 13另一个想法是首先使用多个值的crete列,然后聚合它:
df1 = (df.assign(**{'price*stock': df.price.mul(df.stock)})
.groupby('Type', as_index=False)['price*stock']
.sum())
print (df1)
Type price*stock
0 a 9
1 b 13发布于 2022-04-26 07:47:20
groupby关于类型和apply方程的每组。
out = df.groupby("Type").apply(lambda x: sum(x["price"]*x["stock"])).reset_index(name="price*stock")
print(out)
>> Type price*stock
0 a 9
1 b 13发布于 2022-04-26 08:13:51
另外:
df.groupby('Type').apply(lambda x:x.price@x.stock).reset_index(name='price_stock')
Type price_stock
0 a 9
1 b 13https://stackoverflow.com/questions/72010029
复制相似问题