python - 基于类别的聚合值
问题描述
我有一个像这样的数据框:
SK_ID_CURR CREDIT_ACTIVE CREDIT_DAY_OVERDUE
436084 Sold 0
436084 Active 951
436084 Sold 0
436084 Active 0
436084 Bad debt 0
436084 Active 936
436084 Active 951
我想为每个 CREDIT_ACTIVE 类别创建新列,并使用相应的 CREDIT_DAY_OVERDUE 值总和。
结果应如下所示:
SK_ID_CURR CREDIT_ACTIVE_OD CREDIT_BAD_DEBT_OD CREDIT_ACTIVE_SOLD_OD
436084 2838 0 0
解决方案
df = (df.groupby(['SK_ID_CURR','CREDIT_ACTIVE'])['CREDIT_DAY_OVERDUE']
.sum()
.unstack(fill_value=0))
或使用pivot_table
:
df = df.pivot_table(index='SK_ID_CURR',
columns='CREDIT_ACTIVE',
values='CREDIT_DAY_OVERDUE',
aggfunc='sum',
fill_value=0)
然后更改列名:
df.columns = ['CREDIT_{}_OD'.format(x.upper()) for x in df.columns]
最后从索引创建列:
df = df.reset_index()
print (df)
SK_ID_CURR CREDIT_ACTIVE_OD CREDIT_BAD DEBT_OD CREDIT_SOLD_OD
0 436084 2838 0 0
推荐阅读
- typescript - 打字稿:合并两种类型/接口并保持所有泛型有效
- javascript - 使用路径参数时 Next.js 应用程序 404
- .net-core - 随机出现的问题:使用 Hangfire 的“无法解析类型 (...) 的服务”
- ionic4 - Gif 图像在 ionic-5 闪屏中不起作用
- python - 在某个时间出现/某种格式的字符出现之前拆分
- java - Java Android,遍历所有getter
- json - 从 Go 中的流中打印/记录完整的非结构化 json
- kotlin - Kotlin 箭头库中 Either.fold() 的返回类型
- typescript - 在 Typescript 中为字典的某些键指定不同的类型
- php - 打印单项多维数组