如何在Python中动态读取后缀名变化的CSV文件?
解决Python动态读取CSV并创建对应DataFrame的问题
嘿,我懂你碰到的麻烦了——你原来的代码里想用循环变量直接命名DataFrame,比如{n} = pd.read_csv(...),但Python根本认不出这种写法,这确实挺让人头疼的。不过别担心,咱有个更靠谱的办法,用字典来存储这些DataFrame就完美解决了!
为什么原来的方法行不通?
直接用{n}作为变量名的写法是错误的,Python不支持这种动态创建变量的方式。虽然有个偏门技巧(比如用globals())能实现,但非常不推荐——它会污染你的全局命名空间,变量多了之后根本没法管理,还容易和现有变量重名出bug。
正确的实现方式
用字典来存储每个UF代码对应的DataFrame,既清晰又方便后续调用,代码如下:
import pandas as pd # 你的UF列表,我给改了个更清晰的变量名 uf_codes = ['AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP1', 'SP2', 'SE', 'TO'] # 创建一个空字典,用来存所有的DataFrame df_dict = {} for code in uf_codes: # 用f-string格式化文件名,确保每个UF对应正确的文件 csv_file = f'Basico_{code}.csv' # 读取CSV文件,把结果存入字典,键就是UF代码 df_dict[code] = pd.read_csv(csv_file, encoding='latin1', sep=';', header=0)
怎么调用这些DataFrame?
之后你要访问某个UF的数据集,直接通过字典的键来取就行:
- 比如要获取SP1的DataFrame:
df_dict['SP1'] - 要查看AC的前5行:
df_dict['AC'].head()
这种方式不仅解决了动态创建的问题,还能让你统一管理所有的数据集,后续要遍历、修改或者导出都超级方便!
内容的提问来源于stack exchange,提问作者Marco Aurelio P Marsitch
相关产品推荐
相关产品推荐

