将DataFrames列表按symbol列值命名保存JSON文件时遇语法错误
问题排查与解决方案
咱们来一步步拆解你代码里的问题,然后给出可行的修正方案:
1. 核心错误点分析
语法结构混乱
你的代码尝试用列表推导式,但括号嵌套、字符串拼接的逻辑完全出错了——temp[i][[temp[i]['symbol']] + '.txt') 这里的中括号、小括号不匹配,还错误地把DataFrame的列索引和字符串直接相加,这是触发语法报错的直接原因。
遍历逻辑错误
temp 是DataFrames的列表,不是单个DataFrame,所以你不能调用 temp.symbol.unique()——列表根本没有symbol这个属性,这也是逻辑上的致命问题。
文件名取值错误
你想取每个DataFrame的symbol列值作为文件名,但temp[i][[temp[i]['symbol']]]这种写法是在错误地尝试取一个列,而你需要的是这个列的具体字符串值(假设每个DataFrame的symbol列值唯一,毕竟要作为单个文件名)。
修正后的代码
# 遍历列表中的每个DataFrame for df in temp: # 获取当前DataFrame的symbol值(假设每个df的symbol列值唯一) symbol = df['symbol'].iloc[0] # 构造文件名,用.json后缀更符合JSON文件的规范,要.txt可以自行修改 filename = f"{symbol}.json" # 保存为JSON文件 df.to_json(filename)
补充说明
- 如果你的DataFrame里
symbol列存在多个不同值,那你需要先按symbol分组再保存,但从你的需求描述来看,每个DataFrame对应一个唯一的symbol,上面的代码完全适用。 - 如果你非要用列表推导式(虽然循环写法更易读),正确的写法是:
[df.to_json(f"{df['symbol'].iloc[0]}.json") for df in temp]
内容的提问来源于stack exchange,提问作者coding404
相关产品推荐
相关产品推荐

