Python Groupby函数

Python Groupby函数,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试使用Pandas中的groupby函数来计算使用groupby函数买卖数量的差异 我尝试了很多不同的方法,但都没有找到解决办法 df=pd.DataFrame({'Security Name':['Max-Pro','Max-Pro','AVG','AVG'], ‘Bos’:[‘买’、‘卖’、‘买’、‘卖’], “交易量”:[200015005002000] }) #这是我得到的输出 证券名称和交易量 0 Max Pro Buy 2000 1最大专业销售1500台 2平均购买500 3

我正在尝试使用
Pandas
中的
groupby
函数来计算使用
groupby
函数买卖数量的差异

我尝试了很多不同的方法,但都没有找到解决办法

df=pd.DataFrame({'Security Name':['Max-Pro','Max-Pro','AVG','AVG'],
‘Bos’:[‘买’、‘卖’、‘买’、‘卖’],
“交易量”:[200015005002000]
})
#这是我得到的输出
证券名称和交易量
0 Max Pro Buy 2000
1最大专业销售1500台
2平均购买500
3 2000年平均销售额
gb=df.groupby('安全名称')
使用groupby函数所需的输出-

   Security Name          Diff_in_Traded_Quantity
  0  Max Pro                    500
  1  AVG                       -1500
无法获取上述结果。已尝试应用和
agg()
函数,但无法解决此问题

我需要帮助

似乎您需要使用
groupby

df['Quantity Traded'].diff().groupby(df['Security Name'],sort=False).last()


从你的例子中我了解到,
Bos==“买入”
是一种
交易量
损失,而
Bos==“卖出”
是一种
交易量
收益。考虑到这一点,您可以执行以下操作:

df = pd.DataFrame({
    'Security Name':['Max Pro','Max Pro','AVG','AVG'] ,
    'Bos':['Buy','Sell','Buy','Sell'],
    'Quantity Traded': [2000,1500,500,2000]
})

# Set the Bos == Sell as negative values
df.loc[ df["Bos"] == "Sell", "Quantity Traded" ] *= -1 
df = df.groupby("Security Name").sum()

每个小组都有两行吗?如果行得通,请回答并结束这个问题。非常感谢,这很有效:)为了解决这个问题,我们已经努力了一段时间。
df = pd.DataFrame({
    'Security Name':['Max Pro','Max Pro','AVG','AVG'] ,
    'Bos':['Buy','Sell','Buy','Sell'],
    'Quantity Traded': [2000,1500,500,2000]
})

# Set the Bos == Sell as negative values
df.loc[ df["Bos"] == "Sell", "Quantity Traded" ] *= -1 
df = df.groupby("Security Name").sum()