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

将多个文件导入pandas生成DataFrame的问题求助

Pandas多文件导入问题解答

报错原因说明

你遇到的报错是因为dataframe_list中的每个元素本身就是DataFrame结构,直接传入pd.DataFrame()构造函数属于错误用法:pandas会尝试将每个子DataFrame作为新DataFrame的单元素行,因各子DataFrame行数不一致,触发了参差不齐嵌套序列的警告。


Q1:基于dataframe_list创建统一的DataFrame

使用pandas内置的concat方法拼接所有子DataFrame即可:

# ignore_index参数会重置合并后的全局行索引,避免不同子DataFrame的行索引重复
unified_df = pd.concat(dataframe_list, ignore_index=True)

如果需要后续追溯每行数据的来源文件,可以修改遍历逻辑,给每个子DataFrame新增来源文件标识列后再合并:

dataframe_list = []
for file_name in files_list: 
  with open(file_name, "r") as f:
    lines = f.readlines()
    parsed_data = [process(line) for line in lines]
    df = pd.DataFrame(parsed_data)
    # 新增列记录数据所属文件
    df['source_file'] = file_name
    dataframe_list.append(df)

unified_df = pd.concat(dataframe_list, ignore_index=True)

Q2:生成对应文件名的独立DataFrame

推荐使用字典存储文件名和对应DataFrame的映射关系,相比零散的独立变量更易统一管理:

# 初始化空字典存储映射关系
df_mapping = {}
for file_name in files_list: 
  with open(file_name, "r") as f:
    lines = f.readlines()
    parsed_data = [process(line) for line in lines]
    df = pd.DataFrame(parsed_data)
    # 去除后缀.all,生成你需要的dir1/file1格式的键,Python3.9以下版本替换为file_name.rsplit('.',1)[0]
    file_key = file_name.removesuffix('.all')
    df_mapping[file_key] = df

后续需要调用对应文件的DataFrame时,直接按文件名索引即可,例如df_mapping['dir1/file1']即可取出对应文件的数据。


内容的提问来源于stack exchange,提问作者I'm not a robot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:24:07