pandas - 聚合 pandas df 以获取 max 和 min 作为列
问题描述
我的数据框如下:
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()
)
推荐阅读
- php - Laravel Cron 作业按分钟正确工作,但不能按天工作
- python - 即使不使用变量,函数的返回值是否应该分配给变量?
- docker - 变量替换后詹金斯不会使用参数
- sql-server - 在 SQL 表中的记录前面更新提取文件的文件名
- laravel - 在 vue.js 中,我试图获取行数,但它返回 null
- python - 如何使用 C 将 BSTR 转换为字符串
- json - 使用 Go 将对象添加到 JSON 数组中
- python-3.9 - Python 3.9 导入问题
- android - 如何在 Android Studio 中返回主屏幕
- swiftui - SwiftUI 的 NavigationView 缺少 Apple Watch 上的后退按钮