pandas批量读取JSON文件生成DataFrame时Index与原文件名不匹配如何调整
问题解决方案
错误原因
你当前的逻辑是遍历i从0到5,计算6+i得到的值分别为6、7、8、9、10、11,直接和前缀weather5拼接后,就会生成weather510、weather511这类不符合预期的结果。
修复方案
方案1(推荐,通用性强)
直接用你已经读取到的原文件名去除后缀作为Index值,不需要手动拼接,完全适配现有文件名规则,后续新增其他JSON文件也不需要修改逻辑:
把原来的赋值行
df['Index'] = 'weather5' + str(6+i)
替换为:
# 去掉文件名末尾的.json后缀,直接作为Index值 df['Index'] = file_name.rsplit('.', 1)[0]
额外建议:给文件列表增加排序逻辑,避免系统返回的文件顺序不符合预期,修改文件列表生成行:
json_files = sorted([pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')])
方案2(仅适配当前场景)
如果要保留手动拼接的逻辑,直接整体计算目标数值即可:
df['Index'] = 'weather' + str(56 + i)
i从0开始遍历的情况下,56+i的结果正好对应56、57、58、59、60、61,和原文件名完全匹配。
内容的提问来源于stack exchange,提问作者xavi
相关产品推荐
相关产品推荐

