如何使用 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