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

使用pd.concat合并DataFrame时列丢失,所有数据合并至一列如何解决?

解决pd.concat合并DataFrame列丢失、数据挤入单列问题

问题根源

  1. 接口返回的JSON结构不一致,导致pd.json_normalize生成的DataFrame列名无法对齐,合并后列结构混乱
  2. 循环内反复执行pd.concat和to_csv,既降低效率,也可能因初始空DataFrame引发隐性合并问题
  3. 部分JSON响应为一维数组,pd.json_normalize直接解析为单列DataFrame,与其他结构的DataFrame合并时出现列错位

修正代码

import pandas as pd
import requests

df_list = []

for uuid in uuid_df['uuid']:
    headers = {'accept': 'application/json', 'api-key': APIKEY}
    # 注意:原代码中re.get应为requests.get,属于笔误
    response = requests.get(f'URL/{uuid}', headers=headers)
    json_response = response.json()
    
    # 兼容列表/字典两种JSON结构
    df = pd.json_normalize(json_response)
    df_list.append(df)

# 一次性合并所有DataFrame,外连接保留所有列,重置索引
full_df = pd.concat(df_list, axis=0, join='outer', ignore_index=True)
# 保存时去掉默认索引
full_df.to_csv('research.csv', index=False)

核心改进

  • 批量合并:先收集所有接口返回的DataFrame到列表,最后一次性合并,避免循环内重复合并的性能损耗和异常
  • 结构兼容:pd.json_normalize可自动处理字典和列表结构,确保不同格式的JSON响应都能解析为规范的DataFrame
  • 明确合并规则:显式指定join='outer'确保保留所有列,ignore_index=True避免合并后索引重复
  • 优化IO操作:仅在所有数据处理完成后保存CSV,减少磁盘写入次数

内容的提问来源于stack exchange,提问作者Jess R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:32:11