如何将文件夹中多个TXT文件导入为以文件名命名的DataFrame
解决方法:将TXT文件导入为对应文件名的DataFrame
嘿,这个需求我之前处理过,其实有两种实用的方式,一种是更规范的字典管理法(强烈推荐,尤其是文件多的时候),另一种是直接创建对应文件名的变量,咱们一步步来:
方法一:用字典统一管理所有DataFrame(推荐)
这种方式会把所有DataFrame存在一个字典里,键就是去掉.txt后缀的文件名,后续调用、遍历都特别方便,还不会出现变量名冲突的问题。
代码示例
import pandas as pd import os # 替换成你的TXT文件夹路径 folder_path = "/your/folder/path" # 创建空字典来存所有DataFrame dfs_collection = {} # 遍历文件夹里的所有TXT文件 for filename in os.listdir(folder_path): # 只处理.txt结尾的文件(小写判断避免大小写问题) if filename.lower().endswith(".txt"): # 去掉文件名的后缀,作为字典的键 df_key = filename[:-4] # 也可以用filename.replace(".txt", ""),两种写法都可行 # 读取TXT为DataFrame,根据你的文件格式调整参数: # 比如制表符分隔用sep="\t",空格分隔用sep=" ",无表头加header=None current_df = pd.read_csv(os.path.join(folder_path, filename), sep="\t", encoding="utf-8") # 把DataFrame存入字典 dfs_collection[df_key] = current_df
使用方式
之后要调用某个文件的DataFrame,直接通过字典键访问就行:
# 比如你有个sales_data.txt,就这么调用查看前几行 dfs_collection["sales_data"].head()
方法二:动态创建对应文件名的变量
如果你一定要让每个DataFrame的名字和文件名完全一致,可以用globals()来动态生成变量,但敲黑板:这种方法不推荐用于文件数量多或者文件名有特殊字符的场景,容易出现命名冲突或报错。
代码示例
import pandas as pd import os folder_path = "/your/folder/path" for filename in os.listdir(folder_path): if filename.lower().endswith(".txt"): df_name = filename[:-4] current_df = pd.read_csv(os.path.join(folder_path, filename), sep="\t", encoding="utf-8") # 动态创建全局变量,变量名就是去掉后缀的文件名 globals()[df_name] = current_df
使用方式
之后直接用文件名(去掉.txt)作为变量名就行:
# 比如文件是user_log.txt,直接用user_log访问查看统计信息 user_log.describe()
注意事项
- 记得根据你的TXT文件实际格式调整
pd.read_csv的参数,比如分隔符sep、是否有表头header、编码encoding等,避免读取错误。 - 如果文件夹里有非TXT文件,一定要加
endswith(".txt")的判断,过滤掉无关文件。
内容的提问来源于stack exchange,提问作者Yolo_chicken
相关产品推荐
相关产品推荐

