我有一个 Pandas dataframe 如下。需要再添加两列,其中包含特定品牌的销售额最大值和最小值。
date brand price quantity sales vat
31-May-13 Reebok 10 23 230 3.5
31-May-13 Adidas 10 25 250 2.8
31-May-13 Campus 8 21 168 3.5
31-May-13 Nike 10 20 200 6.5
31-May-13 Woods 2 7 14 2.8
01-Jun-13 Reebok 4 27 108 2.2
01-Jun-13 Adidas 7 28 196 3.8
01-Jun-13 Campus 7 41 287 4.2
01-Jun-13 Nike 2 39 78 7.2
01-Jun-13 Woods 5 26 130 3.3
02-Jun-13 Reebok 10 5 50 2.2
02-Jun-13 Adidas 10 15 150 3.8
02-Jun-13 Woods 6 30 180 3.3
这里我的日期列没有按顺序排列,日期列中的每个日期都没有所有品牌数据。结果应该是这样的,
date brand price quantity sales vat Max Min
31-May-13 Reebok 10 23 230 3.5 230 50
31-May-13 Adidas 10 25 250 2.8 250 150
31-May-13 Campus 8 21 168 3.5 287 168
31-May-13 Nike 10 20 200 6.5 200 78
31-May-13 Woods 2 7 14 2.8 180 14
01-Jun-13 Reebok 4 27 108 2.2 230 50
01-Jun-13 Adidas 7 28 196 3.8 250 150
01-Jun-13 Campus 7 41 287 4.2 287 168
01-Jun-13 Nike 2 39 78 7.2 200 78
01-Jun-13 Woods 5 26 130 3.3 180 14
02-Jun-13 Reebok 10 5 50 2.2 230 50
02-Jun-13 Adidas 10 15 150 3.8 250 150
02-Jun-13 Woods 6 30 180 3.3 180 14
请您参考如下方法:
您可以使用 groupby.transform:
df['max'] = df.groupby('brand')['sales'].transform('max')
df['min'] = df.groupby('brand')['sales'].transform('min')
df
Out:
date brand price quantity sales vat max min
0 2013-05-31 Reebok 10 23 230 3.5 230 50
1 2013-05-31 Adidas 10 25 250 2.8 250 150
2 2013-05-31 Campus 8 21 168 3.5 287 168
3 2013-05-31 Nike 10 20 200 6.5 200 78
4 2013-05-31 Woods 2 7 14 2.8 180 14
5 2013-06-01 Reebok 4 27 108 2.2 230 50
6 2013-06-01 Adidas 7 28 196 3.8 250 150
7 2013-06-01 Campus 7 41 287 4.2 287 168
8 2013-06-01 Nike 2 39 78 7.2 200 78
9 2013-06-01 Woods 5 26 130 3.3 180 14
10 2013-06-02 Reebok 10 5 50 2.2 230 50
11 2013-06-02 Adidas 10 15 150 3.8 250 150
12 2013-06-02 Woods 6 30 180 3.3 180 14
