You need to enable JavaScript to run this app. Pandas执行assign、groupby聚合后如何保留ID列方便数据合并
优惠活动
大模型
产品
解决方案
定价
更多

Pandas执行assign、groupby聚合后如何保留ID列方便数据合并

核心原因

经过groupby聚合、unstack转宽表操作后,原本作为分组键的MotherID、PregnancyID会从DataFrame普通列转为行级多层索引。pandas导出CSV、识别列结构时,只会将普通实体列纳入处理范围,行索引字段默认不会被包含在内,因此会出现ID列丢失的情况。

解决方式

无需调整前期分组、聚合、宽表转换的逻辑,仅需在整个处理流程末尾追加.reset_index()。该操作会将行级多层索引中的MotherID、PregnancyID全部还原为正式实体列,不影响已计算完成的各妊娠阶段测量值结果。

修正后的完整代码

result_df = (
    df.assign(tm = (df['gestationalAgeInWeeks'] + 13 - 1 ) // 13)
    .drop(columns = 'gestationalAgeInWeeks')
    .groupby(['MotherID', 'PregnancyID','tm'])
    .agg('max')
    .unstack()
    .reset_index()  # 新增该行实现ID列还原
)

可选列名简化

上述代码执行完成后,测量值列会呈现为多层元组结构(如('abdomCirc', 1)),如果该结构影响后续多表合并操作,可追加以下代码简化列名:

# 将元组列名转换为可读性更高的格式,例如 abdomCirc_tm1、abdomCirc_tm2
result_df.columns = [
    f"{col[0]}_tm{col[1]}" if isinstance(col, tuple) else col
    for col in result_df.columns
]

处理效果

  • 调用result_df.info()时,MotherID、PregnancyID会被识别为DataFrame的正式列
  • 执行result_df.to_csv("output.csv", index=False)导出文件时,两个ID字段会正常写入CSV首列位置,不会出现丢失

内容的提问来源于stack exchange,提问作者sums22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.13 20:54:05