如何将两个JSON列表合并为一个格式规范的DataFrame?
步骤1:分别将两个字典规范化为DataFrame
首先把两个JSON解析后的字典都用pd.json_normalize转为扁平结构的DataFrame,自动展开嵌套字段,列名用.分隔层级,可读性更强。
import pandas as pd import json dic1 = json.loads(info1) dic2 = json.loads(info2) df1 = pd.json_normalize(dic1) df2 = pd.json_normalize(dic2)
步骤2:根据数据场景选择合并方式
场景1:两组数据结构一致,需纵向追加(如同类型的不同批次数据)
使用pd.concat纵向拼接,重置行索引避免索引重复,还可以新增来源列区分两组数据:
# 可选:新增数据来源列,方便后续区分 df1['source'] = 'info1' df2['source'] = 'info2' # 纵向合并,ignore_index会自动重置全局行索引 merged_df = pd.concat([df1, df2], ignore_index=True)
场景2:两组数据为同一主体的不同字段,需横向拼接(如用户基础信息+用户行为数据)
如果两行数一致、顺序对应,直接按列拼接:
merged_df = pd.concat([df1, df2], axis=1)
如果有共同的唯一主键(如user_id、id),用merge合并更稳妥,避免顺序错乱:
# inner为内连接,仅保留两边都存在的主键数据;需要保留单侧全部数据可改为left/right merged_df = pd.merge(df1, df2, on='共同主键列名', how='inner')
步骤3:格式化输出提升可读性
调整pandas打印参数,避免列折叠、内容截断:
# 显示全部列 pd.set_option('display.max_columns', None) # 显示列的全部内容,不截断 pd.set_option('display.max_colwidth', None) # 调整打印宽度,避免自动换行 pd.set_option('display.width', 1000) print(merged_df)
可选优化
如果合并后存在缺失值,可按需统一替换为缺省值,格式更规整:
# 把所有缺失值替换为'-',可按需修改为其他值 merged_df = merged_df.fillna('-')
内容的提问来源于stack exchange,提问作者Agog
相关产品推荐
相关产品推荐

