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

Pandas如何从单列JSON值动态生成Participant#N姓名及角色多列

解决方案

实现思路

  • 先统计全量数据中单行最多包含的参与者数量,确定动态列的最大N值
  • 按序号遍历每个参与者位置,分别提取对应位置的参与者姓名、角色字段,角色字段将多个type值拼接为逗号分隔的字符串,超出当前行参与者数量的位置填充空值
  • 生成的字段会直接追加到原始responses DataFrame中,可直接用于后续和其他DataFrame合并操作

可运行代码

import pandas as pd

# 计算最大参与者数量,确定动态列上限
max_participant = responses['participants'].apply(len).max()

# 循环生成每一个参与者的对应列
for n in range(1, max_participant + 1):
    # 提取第N个参与者姓名
    responses[f'Participant#{n}姓名'] = responses['participants'].apply(
        lambda x: x[n-1]['life']['name'] if len(x) >= n else pd.NA
    )
    # 提取第N个参与者角色,拼接为逗号分隔字符串
    responses[f'Participant#{n}角色'] = responses['participants'].apply(
        lambda x: ','.join([role['type'] for role in x[n-1]['roles']]) if len(x) >= n else pd.NA
    )

效果说明

你提供的3行测试数据运行后会生成6个新字段,其中N最大值为3,完全匹配目标结构:

  1. 第一行仅1个参与者,Participant#2、Participant#3相关字段填充空值
  2. 第二行3个参与者信息全部正常提取
  3. 第三行2个参与者,Participant#3相关字段填充空值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:57:04