在单个数据框中对不同的列进行多项操作

时间:2018-09-07 09:00:30

标签: python python-3.x pandas group-by list-comprehension

对单个数据框的不同列进行多次操作

我有一个如下所述的数据框:

PNO         VAL1    VAL2    VAL3    VAL4    CNT
100         45      15      35      98      1
100         25      85      24      65      1
100         85      74      74      75      1
100         98      36      36      84      1
100         74      54      54      52      0
2000        36      21      21      41      1
2000        54      25      45      52      1
2000        21      85      25      63      1
2000        58      98      85      89      0
30000       96      35      66      87      1
30000       32      24      87      54      1
30000       35      58      41      56      1
30000       24      96      52      25      1

我想创建一个结果数据框,该数据框将在不同的列上执行以下操作:

每个PNO

  1. 查找VAL1列的最大值
  2. 找到VAL2色谱柱的最小值
  3. 查找VAL3和VAL4列的最后一个值
  4. 查找CNT列的总和

结果:

PNO         VAL1    VAL2    VAL3    VAL4    CNT
100         98      15      54      52      4
2000        58      21      85      89      3
30000       96      24      52      25      4

1 个答案:

答案 0 :(得分:2)

在每列上将groupbyaggdict的规则一起使用

In [32]: (df.groupby('PNO', as_index=False)
            .agg({'VAL1': 'max', 'VAL2': 'min', 
                  'VAL3': 'last', 'VAL4': 'last', 'CNT': 'sum'})
             )
Out[32]:
     PNO  VAL1  VAL2  VAL3  VAL4  CNT
0    100    98    15    54    52    4
1   2000    58    21    85    89    3
2  30000    96    24    52    25    4