Pandas 聚合数据以获得最大值和最小值作为列

Pandas 聚合数据以获得最大值和最小值作为列,pandas,Pandas,我的数据框如下: import pandas as pd inp = [{'c1':10,'c2':100,'c3':100}, {'c1':10,'c2':100,'c3':110}, {'c1':10,'c2':100,'c3':120}, {'c1':11,'c2':100,'c3':100}, {'c1':11,'c2':100,'c3':110}, {'c1':11,'c2':100, 'c3':120}] df = pd.DataFrame(inp) 这就是我聚合的方式 new_d

我的数据框如下:

import pandas as pd
inp = [{'c1':10,'c2':100,'c3':100}, {'c1':10,'c2':100,'c3':110}, {'c1':10,'c2':100,'c3':120}, {'c1':11,'c2':100,'c3':100}, {'c1':11,'c2':100,'c3':110}, {'c1':11,'c2':100, 'c3':120}]
df = pd.DataFrame(inp)
这就是我聚合的方式

new_df = df.groupby(['c1', 'c2']).agg({"c3": [min,max]}) 
但产出与我的预期不符。我的期望如下:

inp = [{'c1':10, 'c2':100,'c3_min':100, 'c3_max':120},  {'c1':11, 'c2':100,'c3_min':100, 'c3_max':120}]
df = pd.DataFrame(inp)
我做错了什么?如何达到预期输出?

尝试:

# tell Pandas to use the vectorized functions with `'min', 'max'` 
# instead of `min` and `max`
new_df = df.groupby('c1', as_index=False)['c2'].agg(['min','max'])
或匹配输出:

new_df = (df.groupby('c1')['c2']
            .agg(['min','max'])
            .add_prefix('c2_')
            .reset_index()
         )
尝试:

或匹配输出:

new_df = (df.groupby('c1')['c2']
            .agg(['min','max'])
            .add_prefix('c2_')
            .reset_index()
         )

另一种方法是保留当前代码,并使用 :

印刷品:

   c1  c2_min  c2_max
0  10     100     120
1  11     100     120

另一种方法是保留当前代码,并使用 :

印刷品:

   c1  c2_min  c2_max
0  10     100     120
1  11     100     120
同一故事
df.groupby(['c1','c2'])['c3'].agg…
。同一故事
df.groupby(['c1','c2'])['c3'].agg…