如何用字符串值命名DataFrame?代码报错‘str’对象不支持项赋值
解决你的CSV文件读取与DataFrame创建问题
嘿,我一眼就揪出你代码里的两个问题啦,咱们一步步来拆解:
错误原因分析
- 函数名拼写失误:你定义的函数是
csv_file_names,但调用的时候写成了csv_files_names(多了一个s),这会直接触发NameError,Python根本找不到这个函数哦。 - 字符串不可变导致赋值失败:
file[:-4] = pd.read_csv(file)这行代码的核心问题是——file是字符串类型,而Python里的字符串是不可变对象,你没法直接对它的切片进行赋值操作,这就是你看到'str' object does not support item assignment错误的根源。而且就算能赋值,这种方式也没法把DataFrame和文件名有效关联起来呀。
修正后的代码
我给你调整了代码,用字典来存储所有的DataFrame,既能通过文件名快速访问对应的DataFrame,又避免了动态创建变量的混乱:
import os import pandas as pd def csv_file_names(path): filenames = os.listdir(path) return [filename for filename in filenames if filename.endswith(".csv")] # 修正函数名的拼写错误 csv_files = csv_file_names(data_path) # 创建字典存储DataFrame,键为去掉.csv后缀的文件名 data_frames = {} for file in csv_files: # 拼接完整文件路径,防止脚本不在目标目录时找不到文件 full_file_path = os.path.join(data_path, file) # 提取不带后缀的文件名作为字典的键 df_key = file[:-4] # 将DataFrame存入字典 data_frames[df_key] = pd.read_csv(full_file_path)
使用说明
之后你想访问某个文件对应的DataFrame,直接通过字典的键来获取就好啦,比如你的CSV文件叫sales_data.csv,那对应的DataFrame就是data_frames["sales_data"]。
这种用字典存储的方式比动态创建变量安全得多,也更容易管理所有的DataFrame,不会出现命名冲突或者找不到变量的问题~
内容的提问来源于stack exchange,提问作者Nilesh
相关产品推荐
相关产品推荐

