如何在Python Pandas中读取多文件到独立DataFrame及报错解决
解决多文件读取到不同DataFrame的问题
首先咱们来拆解下你代码里的问题,这也是触发NameError的核心原因:
- 文件名引用错误:你写
pd.read_csv(Norway.csv)时,Python会把Norway.csv当成一个变量名去查找,但你根本没定义过这个变量,自然会报错!正确的做法是要么用你之前定义的文件名变量(比如f1),要么直接把文件名写成带引号的字符串(比如'Norway.csv')。 - 变量重复赋值:你连续用
f变量赋值了两次,后面的f='Canada.csv'和f='Chile.csv'会直接覆盖前面的内容,最后f的值只会是'Chile.csv',之前的Norway.csv等于白定义了。
修正后的基础版代码
如果你想给每个DataFrame单独命名,那可以这样写:
import pandas as pd # 给每个文件名单独定义变量,避免覆盖 fn_norway = 'Norway.csv' fn_canada = 'Canada.csv' fn_chile = 'Chile.csv' # 读取时直接用定义好的变量,或者写带引号的字符串 norway_df = pd.read_csv(fn_norway) canada_df = pd.read_csv(fn_canada) chile_df = pd.read_csv(fn_chile)
这样就不会再出现NameError,每个文件都能对应到单独的DataFrame里。
更高效的进阶写法(适合多文件场景)
如果要处理6个甚至更多文件,一个个定义变量太繁琐,咱们可以用字典来统一管理所有DataFrame,操作起来更灵活:
import pandas as pd # 把所有要读取的文件名放进一个列表里 file_list = ['Norway.csv', 'Canada.csv', 'Chile.csv', 'xxx.csv', 'yyy.csv', 'zzz.csv'] # 创建空字典来存储DataFrame df_collection = {} # 循环读取每个文件,用文件名(去掉后缀)作为字典的键 for file in file_list: # 提取不带后缀的文件名(比如'Norway.csv'变成'Norway') df_key = file.split('.')[0] # 读取文件并存入字典 df_collection[df_key] = pd.read_csv(file) # 后续要调用某个DataFrame时,直接从字典里取就行 print(df_collection['Norway'].head())
这种方法不用手动给每个DataFrame命名,不管文件数量多少,都能轻松处理。
内容的提问来源于stack exchange,提问作者Abhinav Kumar




