我有一個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 功能但仍然失敗:(
uj5u.com熱心網友回復:
首先是多個列,然后聚合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
uj5u.com熱心網友回復:
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
uj5u.com熱心網友回復:
還:
df.groupby('Type').apply(lambda x:[email protected]).reset_index(name='price_stock')
Type price_stock
0 a 9
1 b 13
uj5u.com熱心網友回復:
df.groupby('Type').apply(lambda x: x['price'].dot(x['stock'])).to_frame('sumproduct')
sumproduct
Type
a 9
b 13
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/465704.html
