如何使用Pandas向DataFrame添加文件名列

来源:站长平台作者:小团团头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何使用Pandas向DataFrame添加文件名列》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用Pandas向DataFrame添加文件名列》有用,将其分享出去将是对创作者最好的鼓励。

在使用Pandas处理数据时,经常会遇到需要给DataFrame添加文件名列的需求,比如批量读取多个CSV文件后,需要记录每一行数据来自哪个原始文件,方便后续做数据溯源或者按文件维度做统计分析。

如何使用Pandas向DataFrame添加文件名列

单文件场景添加文件名列

如果是单个文件生成的DataFrame,添加文件名列的操作非常简单,只需要在读取数据后,新增一个列,把文件名赋值给该列的所有行即可。下面是具体的实现代码:

import pandas as pd

# 读取单个CSV文件
file_name = "data_2023.csv"
df = pd.read_csv(file_name)

# 添加文件名列,所有行的值都是当前文件名
df["file_name"] = file_name

# 查看结果
print(df.head())

上面的代码中,先定义了文件名变量,读取文件生成DataFrame后,直接给DataFrame新增file_name列,赋值为文件名,这样所有行的该列都会填充对应的文件名信息。

多文件批量添加文件名列

实际工作中更多场景是批量读取多个文件,这时候可以结合循环或者列表推导式,给每个文件对应的DataFrame添加文件名列,再合并成总的数据集。下面是批量处理CSV文件的示例:

import pandas as pd
import os

# 定义文件所在目录
file_dir = "./data_files"
# 获取目录下所有CSV文件
file_list = [f for f in os.listdir(file_dir) if f.endswith(".csv")]

# 存储所有DataFrame的列表
df_list = []

for file in file_list:
    # 拼接完整文件路径
    file_path = os.path.join(file_dir, file)
    # 读取当前文件生成DataFrame
    temp_df = pd.read_csv(file_path)
    # 给当前DataFrame添加文件名列
    temp_df["file_name"] = file
    # 把处理后的DataFrame加入列表
    df_list.append(temp_df)

# 合并所有DataFrame
total_df = pd.concat(df_list, ignore_index=True)

# 查看合并后的结果
print(total_df["file_name"].unique())

上面的代码先获取指定目录下所有的CSV文件,然后遍历每个文件,读取后给对应的DataFrame添加文件名列,最后把所有DataFrame合并成一个总表,这样总表中每一行都能对应到原始的文件名。

注意事项

  • 添加文件名列的时候,要注意文件名是存储完整路径还是仅存储文件名,根据实际需求选择即可,上面的示例中存储的是仅文件名,如果需要完整路径可以把赋值的内容换成file_path
  • 如果读取的文件不是CSV格式,比如是Excel、JSON等,只需要把pd.read_csv换成对应的读取方法,添加文件名列的逻辑不变。
  • 合并多个DataFrame的时候,建议使用ignore_index=True参数,重置合并后的索引,避免出现索引重复的问题。

总结

给DataFrame添加文件名列的核心逻辑就是先生成DataFrame,再新增列并赋值文件名,单文件场景直接操作即可,多文件场景结合循环批量处理就能高效完成。这个方法在数据处理、数据溯源等场景中非常实用,掌握后可以提升批量数据处理的效率。

PandasDataFrame文件名列数据读取修改时间:2026-07-04 23:42:20

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。