如何在Pandas中展开字典格式的字符串列并拆分键值对
展开DataFrame中的JSON字符串列
步骤1:解析JSON字符串为字典
由于目标列是字符串格式的JSON,首先需要将其解析为Python字典:
import json import pandas as pd # 假设你的DataFrame名为df df['parsed_data'] = df['column_name'].apply(json.loads)
步骤2:将字典展开为新列
使用pd.json_normalize工具直接解析字典列,生成包含各键对应值的新列:
expanded_cols = pd.json_normalize(df['parsed_data'])
此时生成的列名会带有.value后缀(比如trials.value),可以按需重命名:
expanded_cols.columns = expanded_cols.columns.str.replace('.value', '')
步骤3:处理列表类型的值
注意到部分value是列表格式(如["8"]),如果需要提取列表中的单个值:
for col in expanded_cols.columns: # 判断列中是否存在列表类型的值 if expanded_cols[col].apply(lambda x: isinstance(x, list)).any(): expanded_cols[col] = expanded_cols[col].str[0]
步骤4:合并到原DataFrame
将展开后的列与原DataFrame合并(若不需要保留原column_name列可先删除):
final_df = pd.concat([df.drop(['column_name', 'parsed_data'], axis=1), expanded_cols], axis=1)
最终得到的final_df会包含trials、results、trials_nic、custom_cii这几个新列,对应原JSON中的各个键值对。
内容的提问来源于stack exchange,提问作者math_guy_shy
相关产品推荐
相关产品推荐

