基于两列聚合Pandas数据框中的行

时间:2018-03-01 16:28:11

标签: python pandas

嗨,我想知道是否可以在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

1 个答案:

答案 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