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…
。