Skip to main content
 首页 » 编程设计

python之Excel 等效于在 Python pandas 中使用的数组

2025年05月04日15lyj

我有一个 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