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()