将CSV文件转为Python字典时遇语法错误,请求帮助
解决CSV读取时的SyntaxError问题
错误根源
- 变量名非法:Python变量名不能包含
/、空格这类特殊字符,你写的P/E_Ratio、P/E/G_Ratio会被解析成运算符运算,直接触发SyntaxError: can't assign to operator - 列访问方式错误:当DataFrame的列名包含空格、
/时,不能用.语法(比如data.P/ERatio),必须用方括号索引data["列名"]来访问
正确实现代码
1. 读取为单独列表
import pandas as pd # 一次性读取整个CSV data = pd.read_csv("Data.csv") # 使用合法变量名 + 正确列索引方式 name_list = data["Name"].tolist() pe_ratio_list = data["P/E Ratio"].tolist() peg_ratio_list = data["P/E/G Ratio"].tolist() eps_list = data["Earnings Per Share"].tolist() beta_list = data["BETA"].tolist() score_list = data["Score"].tolist() # 测试输出 print(name_list) print(pe_ratio_list)
2. 直接转换为Python字典(满足你最初的需求)
如果想把整个CSV转成字典,pandas自带方法可以直接实现:
import pandas as pd data = pd.read_csv("Data.csv") # 转成列表嵌套字典,每个元素对应一行数据 row_dict = data.to_dict("records") # 转成列名为键、列数据列表为值的字典 column_dict = data.to_dict("list") # 测试输出 print(column_dict["Name"]) print(column_dict["P/E Ratio"])
额外优化建议
- 不要重复导入pandas:你的代码里同时用了
import pandas as pd和from pandas import *,保留import pandas as pd即可,避免命名冲突 - 循环读取单列的写法完全没必要,一次性读取整个CSV再处理效率更高
内容的提问来源于stack exchange,提问作者Jash2204
相关产品推荐
相关产品推荐

