如何对JSON文件增删列后保存为CSV,能否使用dataframe实现?
操作实现指南
你之前修改未生效的核心原因是pandas的DataFrame操作默认返回新对象,未赋值给变量的话修改不会保留,对应操作方法如下:
1. 新增指定列
你提到length、maxcal、mincal三列均来自原route列,可直接从原数据的route字段提取,无需额外创建空DataFrame拼接:
# 此处提取逻辑需根据你实际的route字段结构调整,示例为route列元素为包含对应key的字典场景 data['length'] = data['route'].apply(lambda x: x['length']) data['maxcal'] = data['route'].apply(lambda x: x['maxcal']) data['mincal'] = data['route'].apply(lambda x: x['mincal'])
如果你已经提前把三列处理为fitness2,则将上述代码替换为:
data = data.join(fitness2)
2. 删除指定列
使用drop方法指定要删除的列,赋值后修改即可生效:
data = data.drop(columns=['route', 'MapURL', 'MapURL_tc', 'MapURL_sc'])
3. 保存为CSV文件
使用to_csv方法导出,配置index=False可以不导出pandas默认生成的行索引,encoding='utf-8-sig'适配Windows下Excel打开中文不出现乱码:
data.to_csv('processed_fitness.csv', index=False, encoding='utf-8-sig')
完整代码示例
import pandas as pd # 读取原始JSON文件 data = pd.read_json('fitness.json') # 从route列提取三个新列,根据实际route结构调整提取逻辑 data['length'] = data['route'].apply(lambda x: x['length']) data['maxcal'] = data['route'].apply(lambda x: x['maxcal']) data['mincal'] = data['route'].apply(lambda x: x['mincal']) # 删除不需要的列 data = data.drop(columns=['route', 'MapURL', 'MapURL_tc', 'MapURL_sc']) # 导出为CSV data.to_csv('processed_fitness.csv', index=False, encoding='utf-8-sig')
内容的提问来源于stack exchange,提问作者user16835025
相关产品推荐
相关产品推荐

