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

如何高效解析Pandas DataFrame字典列并新增列?(超200万行场景)

高效解析Pandas DataFrame中的字典列方案

针对你处理200万+行、含字符串格式字典列的DataFrame时,循环+if条件效率低下且无法自动适配新键的问题,以下是高效解决方案:

核心思路

利用Pandas的矢量化操作替代Python循环,自动识别所有字典键并展开为列,无需手动维护条件判断。

步骤1:将字符串字典转换为实际字典对象

CSV读取后dict_data列是字符串格式,需先转换为Python字典:

import pandas as pd
import ast

# 读取CSV文件
df = pd.read_csv('your_data.csv')

# 批量转换字符串字典为实际字典,比循环处理快数倍
df['dict_data'] = df['dict_data'].apply(ast.literal_eval)

步骤2:自动展开字典列为多列

使用Pandas内置方法将字典列直接展开为新的DataFrame,自动识别所有存在的键(包括新增键):

# 展开字典列,自动生成所有键对应的列
expanded_df = pd.DataFrame(df['dict_data'].tolist())

# 将缺失值替换为空字符串,匹配你的输出需求
expanded_df = expanded_df.fillna('')

步骤3:合并原数据与展开后的列

将原DataFrame和展开后的字典列合并:

# 按列合并数据
final_df = pd.concat([df, expanded_df], axis=1)

简化版代码(一步到位)

利用pd.json_normalize可以更简洁地完成展开操作:

import pandas as pd
import ast

df = pd.read_csv('your_data.csv')
df['dict_data'] = df['dict_data'].apply(ast.literal_eval)
final_df = pd.concat([df, pd.json_normalize(df['dict_data']).fillna('')], axis=1)

效率优势

  • 完全避免Python层面的逐行循环,依托Pandas的C扩展实现矢量化处理,200万行数据处理时间可从数小时压缩至几分钟级别。
  • 自动识别所有字典中的键,无需手动更新条件,新键出现时会自动生成对应列,适配数据变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:27:51