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

Python使用pandas读取多份CSV文件合并为单个DataFrame问题求解

解决方案

核心问题原因

你当前的错误是混用了Python列表的append()方法和pandas DataFrame的合并逻辑:

  • 全局变量data_arr被你初始化为普通空列表,每次调用append()会把读取到的整个DataFrame作为一个独立元素塞到列表里,最终就会出现你看到的「列表嵌套多个DataFrame」的结果,而非行维度的合并。
  • 同时你调用GetData函数时传参顺序和定义不符,参数错位也可能导致后续逻辑异常。

修复步骤

  1. 调整全局变量的初始化类型,直接用空DataFrame存储合并后的所有数据,不需要用列表包裹:
import pandas as pd
# 全局初始化为空DataFrame,而非空列表
global data_arr
data_arr = pd.DataFrame()
  1. 修改upload_file函数的合并逻辑,用pd.concat()做纵向行合并:
def upload_file(root, self):
    global data_arr
    # 修正传参顺序,对应GetData定义的参数顺序:root、self、data_dictionary、data_arr
    # 未使用的data_dictionary参数传空字典占位即可
    new_df = GetData(root, self, {}, data_arr)
    # 规避用户未选文件返回None的异常
    if new_df is not None:
        # ignore_index=True会重置合并后的行索引,避免多个文件的索引重复
        data_arr = pd.concat([data_arr, new_df], ignore_index=True)
        print(data_arr)
  1. 如果你的业务场景确实需要符合示例里「外层套列表」的输出格式,合并后手动套一层即可:
output_list = [data_arr]

后续导出操作

你需要将合并后的数据存为CSV时,直接调用pandas自带的方法即可:

# index=False表示不导出pandas自动生成的行索引
data_arr.to_csv("合并结果.csv", index=False, encoding="utf-8-sig")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:54:03