如何用Pandas将目录中文本文件内容添加到DataFrame对应行的最后一列?
当然可以用Pandas实现这个需求!
我来给你拆解具体的实现步骤,核心是把DataFrame的每一行和对应的文本文件关联起来,再把文件内容填充到目标列里:
步骤1:导入必要的库
先把需要用到的工具库导入进来:
import pandas as pd import os
步骤2:写一个读取文本文件的小函数
这个函数负责读取单个文件的内容,还加了基础的异常处理,避免找不到文件时程序崩溃:
def get_file_content(file_name, folder="Directory1"): # 拼接完整的文件路径 full_path = os.path.join(folder, file_name) try: with open(full_path, 'r', encoding='utf-8') as file: # 读取整个文件内容并返回 return file.read() except FileNotFoundError: print(f"提示:没找到文件 {full_path}") return None
步骤3:把文件内容和DataFrame行关联起来
这里分两种常见情况处理:
情况1:DataFrame里有对应文件名的列
比如你的DataFrame已经有一列(比如叫Filename)存储着每行对应的文件名(比如File1.txt),直接用apply方法批量处理就行:
# 假设你的现有DataFrame已经加载好了,比如从CSV读取 df = pd.read_csv("your_data.csv") # 给Column3列填充对应文件的内容 df['Column3'] = df['Filename'].apply(get_file_content)
情况2:行顺序和文件顺序完全对应
如果你的DataFrame行的顺序和Directory1里的文件顺序完全匹配(比如第1行对应File1.txt,第2行对应File2.txt),可以先获取排序后的文件列表,再逐个读取:
# 获取Directory1下所有txt文件,按名称排序保证顺序一致 sorted_files = sorted([f for f in os.listdir("Directory1") if f.endswith('.txt')]) # 批量读取文件内容并赋值给Column3 df['Column3'] = [get_file_content(file) for file in sorted_files]
一些小提醒
- 注意文本文件的编码格式,如果你的文件不是
utf-8,可以把函数里的encoding参数改成对应的格式(比如gbk) - 单个文件70KB的大小完全不用担心性能,这种方法处理起来非常顺畅
- 如果遇到缺失的文件,函数会返回
None,你可以根据需求改成空字符串或者其他默认值
内容的提问来源于stack exchange,提问作者Uma Senthil
相关产品推荐
相关产品推荐

