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

如何从DataFrame列提取字典列表并生成结构化DataFrame?

解决方案

可以通过 pandas 的 explode + json_normalize 组合快速实现需求,以下是具体步骤和代码示例:

1. 拆分列表为单行字典

先用 explode 把 row 列中每个列表拆成单独行,让每个字典占据一行:

exploded_df = df.explode('row', ignore_index=True)

2. 解析字典为结构化字段

用 json_normalize 将字典列直接解析成多列的结构化DataFrame:

structured_df = pd.json_normalize(exploded_df['row'])

3. 字段重命名(可选)

如果需要把原字典里的 acceleration 改成 acc 这类自定义字段名,用 rename 方法:

structured_df = structured_df.rename(columns={
    'acceleration': 'acc',
    # 其他需要重命名的字段按需添加
})

4. 按video_second排序

最后用 sort_values 按 video_second 字段排序,同时重置索引:

final_df = structured_df.sort_values('video_second').reset_index(drop=True)

合并成一行简化代码

如果不需要保留中间步骤,可以把流程合并成链式调用:

final_df = (
    df.explode('row', ignore_index=True)
    .pipe(lambda x: pd.json_normalize(x['row']))
    .rename(columns={'acceleration': 'acc'})
    .sort_values('video_second')
    .reset_index(drop=True)
)

注意事项

如果原始DataFrame除了row列还有其他需要保留的关联字段(比如主表的标识id),在explode后不要丢弃,解析时可以合并:

exploded_df = df.explode('row', ignore_index=True)
structured_df = pd.concat([
    exploded_df.drop('row', axis=1),
    pd.json_normalize(exploded_df['row'])
], axis=1)

内容的提问来源于stack exchange,提问作者Altan Halıgür

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:27:15