如何将Pandas groupby分组结果的Credit行拆分为列并计算相关指标
实现方案
你可以通过pivot_table透视表功能直接完成行转列,再计算对应指标,完整可运行代码如下:
import pandas as pd # 从原始数据表直接生成目标结构 result = pd.pivot_table( df, index="BIRTH_RATE", # 按出生率区间分组 columns="Credit", # 将Credit的不同取值转为列 values="ID", # 用ID列做计数统计 aggfunc="count", # 聚合逻辑为计数 fill_value=0 # 空值补0避免计算错误 ).reset_index() # 计算总授信数和坏账率 result["Credit Total"] = result["Good"] + result["Bad"] # 保留1位小数,和示例输出精度一致 result["Bad rate"] = (result["Bad"] / result["Credit Total"] * 100).round(1) # 调整列顺序为你需要的结构 result = result[["BIRTH_RATE", "Credit Total", "Bad", "Good", "Bad rate"]]
如果你已经提前生成了之前分组得到的长表(记为grouped_df),也可以直接用pivot方法转换:
# 你之前生成的长表 grouped_df = df[['BIRTH_RATE', 'Credit','ID']].groupby(by=['BIRTH_RATE','Credit']).count().reset_index() # 行转列 result = grouped_df.pivot(index="BIRTH_RATE", columns="Credit", values="ID").reset_index() # 后续计算总数量、坏账率、调整列顺序的逻辑和上面完全一致 result["Credit Total"] = result["Good"] + result["Bad"] result["Bad rate"] = (result["Bad"] / result["Credit Total"] * 100).round(1) result = result[["BIRTH_RATE", "Credit Total", "Bad", "Good", "Bad rate"]]
最终输出的result就是你需要的目标表结构。
内容的提问来源于stack exchange,提问作者mrsnoopy
相关产品推荐
相关产品推荐

