Python 单个数据帧中不同列上的多个操作

Python 单个数据帧中不同列上的多个操作,python,python-3.x,pandas,group-by,list-comprehension,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

单个数据帧中不同列上的多个操作

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

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

  • 查找VAL1列的最大值
  • 查找VAL2列的最小值
  • 查找VAL3和VAL4列的最后一个值
  • 查找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
    

    groupby
    agg
    dict
    规则一起用于每列

    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
    

    groupby
    agg
    dict
    规则一起用于每列

    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