嗨,我想知道是否可以在python中的熊猫数据框中进行以下计算。我有一个带有以下列的单个数据框
city zone b_s total
0 cardiff 1 buy 1000
1 cardiff 1 sell 500
2 cardiff 2 buy 100
3 bristol 1 buy 200
4 bristol 1 sell 100
如果可能的话,我需要的是,当城市和区域匹配且该对都有买入和卖出时,然后进行计算。因此,在上述情况下,我想仅对卡迪夫1区和布里斯托尔1区进行计算(因为卡迪夫2区只有一条线)。计算是汇总这两个,所以如果有更多的卖出而不是买入,我只想要卖出线但是想要做总卖出 - 总买入以获得净买入。
输出
加的夫| 1 |买| 500
加的夫| 2 |买| 100
布里斯托尔| 1 |买| 100
答案 0 :(得分:0)
这是我认为您希望实现的目标:
import pandas as pd, numpy as np
df.loc[df['b_s'] == 'sell', 'total'] *= -1
df = df.groupby(['city', 'zone'], as_index=False)['total'].sum()
df['b_s'] = np.where(df['total'] >= 0, 'buy', 'sell')
# city zone total b_s
# 0 bristol 1 100 buy
# 1 cardiff 1 500 buy
# 2 cardiff 2 100 buy