如何将指定无扩展名CSV文件读取为命名Pandas DataFrame?
问题出在哪?我帮你捋清楚!
你遇到的核心问题是循环变量的赋值逻辑不对,而且你想直接用字符串创建对应名称的DataFrame,但当前写法根本没实现这个目的:
- 你的循环里,
raw_df只是个临时的循环变量,每次循环都会被新读入的DataFrame覆盖,所以跑完循环后,它只会保留最后一次读取的结果,前面的YRD数据早就被冲掉了。 - 你想要的是生成
YRD、HOUSE这样独立的DataFrame变量,但直接把读取结果赋值给循环变量,根本没法把字符串(比如'YRD')变成当前环境里的变量名。
两种解决办法
方法1:用字典存(强烈推荐)
用字典来对应文件名和DataFrame,既整洁又方便调用,比零散的变量好管理太多:
import pandas as pd # 要读取的文件名列表 target_files = ['YRD','HOUSE'] # 用字典存每个文件对应的DataFrame df_store = {} for file_name in target_files: df_store[file_name] = pd.read_csv(file_name, low_memory=False) # 调用的时候直接用键名取就行,比如: # print(df_store['YRD'].head())
方法2:直接创建变量(不推荐,容易乱)
如果你铁了心要单独的YRD、HOUSE变量,可以通过修改全局变量字典来实现,代码是这样的:
import pandas as pd target_files = ['YRD','HOUSE'] for file_name in target_files: # 把文件名作为变量名,绑定对应的DataFrame globals()[file_name] = pd.read_csv(file_name, low_memory=False) # 现在就能直接用YRD和HOUSE这两个变量了
不过真心不建议这么干,尤其是文件多的时候,很容易和现有变量重名,后期排查问题会头大。
为啥单独读就行?
单独写YRD = pd.read_csv('YRD', ...)能成功,是因为你明确把读取的结果绑定给了YRD这个变量;但循环里的写法只是把结果给了临时的raw_df,完全没把字符串'YRD'和DataFrame关联成变量,自然就留不下啦。
内容的提问来源于stack exchange,提问作者CandleWax
相关产品推荐
相关产品推荐

