如何用Python/Pandas实现按CSV文件名自动命名DataFrame
自动用CSV文件名命名DataFrame的解决方案
你提到的手动逐个命名DataFrame确实挺麻烦的,尤其是文件数量多的时候。其实最安全也最方便的方式是用字典来存储这些DataFrame,键就是你生成的文件名(去掉后缀),值就是对应的DataFrame,这样既清晰又方便后续调用。
实现代码
import pandas as pd import glob import os # 用户输入路径 path = 'C:/Users/XXXXX/Desktop/datasets/world_bank_data/' # 获取所有CSV文件路径 filenames = glob.glob(path + '/*.csv') # 创建字典存储DataFrame,键为文件名(无后缀) df_dict = {} for file in filenames: # 提取文件名(去掉路径和后缀) name = os.path.splitext(os.path.basename(file))[0] # 读取CSV并存入字典 df_dict[name] = pd.read_csv(file)
如何调用这些DataFrame
之后你想使用哪个DataFrame,直接通过字典的键来访问就行,比如:
# 访问名为'Country'的DataFrame print(df_dict['Country'].head()) # 遍历所有DataFrame做批量操作 for df_name, df in df_dict.items(): print(f"处理DataFrame: {df_name}") # 这里可以加你的批量处理逻辑,比如查看基本信息 df.info()
为什么不直接创建独立变量?
你可能会想能不能直接把这些名字变成全局变量(比如直接生成Country = pd.read_csv(...)),虽然可以用globals()或者locals()来实现,但这种方式不推荐:
- 容易污染全局命名空间,不小心就会覆盖已有的变量
- 代码可读性和可维护性差,后续很难追踪这些变量的来源
如果非要尝试这种方式,代码大概是这样(谨慎使用):
for file in filenames: name = os.path.splitext(os.path.basename(file))[0] globals()[name] = pd.read_csv(file) # 之后可以直接用变量名访问 print(Country.head())
总的来说,用字典存储是最稳妥的方案,既满足了自动命名的需求,又能让代码更规范。
内容的提问来源于stack exchange,提问作者HarrisPY
相关产品推荐
相关产品推荐

