如何使用 pandas 数据框 python 根据 Scrip 名称和类别添加数量列和 Qty 和价格列的总和乘积的值
How to add values of quantity column and sum-product of Qty and price column based on Scrip name and Category using pandas data frame python
示例数据框-
Scrip Name Category Quantity Price
a Buy 10 8
b Buy 20 15
b Buy 5 5
b Sell 3 4
c Buy 5 5
c Buy 6 7
c Sell 5 5
想要的数据帧
Scrip Name buy_qty buy_val(Quantity*price) sell_qty sell_val
a 10 8 0 0
b 25 325 3 12
c 11 67 5 25
尝试:
df.groupby(by=["Scrip Name"]).count()
找到“价值”;然后 groupby
“Scrip Name” 和 “Category” 并找到每组的 “Quantity” 和 “Value” 的总和。然后 pivot
数据框。最后,做一些成本变化以获得预期的结果:
out = (df.assign(Value=df['Quantity']*df['Price'])
.groupby(['Scrip Name','Category'])[['Quantity','Value']]
.sum()
.reset_index()
.pivot('Scrip Name', 'Category', ['Quantity', 'Value'])
.fillna(0)
.swaplevel(0,1, axis=1)
)
out.columns = ['_'.join(col) for col in out.columns]
输出:
Buy_Quantity Sell_Quantity Buy_Value Sell_Value
Scrip Name
a 10.0 0.0 80.0 0.0
b 25.0 3.0 325.0 12.0
c 11.0 5.0 67.0 25.0
示例数据框-
Scrip Name Category Quantity Price
a Buy 10 8
b Buy 20 15
b Buy 5 5
b Sell 3 4
c Buy 5 5
c Buy 6 7
c Sell 5 5
想要的数据帧
Scrip Name buy_qty buy_val(Quantity*price) sell_qty sell_val
a 10 8 0 0
b 25 325 3 12
c 11 67 5 25
尝试:
df.groupby(by=["Scrip Name"]).count()
找到“价值”;然后 groupby
“Scrip Name” 和 “Category” 并找到每组的 “Quantity” 和 “Value” 的总和。然后 pivot
数据框。最后,做一些成本变化以获得预期的结果:
out = (df.assign(Value=df['Quantity']*df['Price'])
.groupby(['Scrip Name','Category'])[['Quantity','Value']]
.sum()
.reset_index()
.pivot('Scrip Name', 'Category', ['Quantity', 'Value'])
.fillna(0)
.swaplevel(0,1, axis=1)
)
out.columns = ['_'.join(col) for col in out.columns]
输出:
Buy_Quantity Sell_Quantity Buy_Value Sell_Value
Scrip Name
a 10.0 0.0 80.0 0.0
b 25.0 3.0 325.0 12.0
c 11.0 5.0 67.0 25.0