You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于EVENT_ID分组为Pandas DataFrame批量生成多列新字段

实现方案

你的需求是典型的长表转宽表场景,直接用Pandas内置的pivot_table方法即可快速实现,无需手写循环:

import pandas as pd

# 假设原始数据存储在df变量中
# 1. 按EVENT_ID分组,将SELECTION_TRAP值转为列,对应值取BSP
wide_df = df.pivot_table(
    index="EVENT_ID",
    columns="SELECTION_TRAP",
    values="BSP",
    aggfunc="first",
    fill_value=0
)
# 2. 补全1~8全部列,避免部分序号缺失
for num in range(1,9):
    if num not in wide_df.columns:
        wide_df[num] = 0
# 3. 调整列顺序并重命名为要求的n_*格式
wide_df = wide_df[[1,2,3,4,5,6,7,8]].rename(columns=lambda x: f"n_{x}")
# 4. 重置索引,将EVENT_ID转为普通列
result = wide_df.reset_index()

输出的result就和你给出的预期格式完全一致。

原有代码问题说明

  1. 没有按EVENT_ID做分组隔离,不同事件的数值会互相覆盖
  2. 赋值时直接操作整列(如df['1'] = xxx),会把该列所有行都改成同一个值,无法实现行级匹配
  3. 缺失列的补全逻辑错误,导致输出列顺序混乱、冗余行重复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:09:04