如何将Pandas DataFrame指定列转为每行的列表并导出为JSON
实现指定字段转为单行列表并导出目标JSON
方法一:直接操作JSON数据
若无需经过DataFrame处理,可直接读取原JSON文件并修改字段格式:
import json # 读取原JSON文件 with open('original.json', 'r', encoding='utf-8') as f: data = json.load(f) # 遍历每个设置条目,将指定字段转为单元素列表 for entry in data['My Setting'].values(): entry['ID'] = [entry['ID']] entry['Competitor ID'] = [entry['Competitor ID']] # 导出目标JSON文件 with open('target.json', 'w', encoding='utf-8') as f: json.dump(data, f, indent=4, ensure_ascii=False)
方法二:通过Pandas DataFrame处理
若需基于原DataFrame进行修改,可按以下步骤操作:
import pandas as pd import json # 从原JSON文件读取数据并转为DataFrame with open('original.json', 'r', encoding='utf-8') as f: raw_data = json.load(f) df = pd.DataFrame(raw_data['My Setting']).T # 转置以匹配行结构 # 将指定字段的值包装为单元素列表 df['ID'] = df['ID'].apply(lambda x: [x]) df['Competitor ID'] = df['Competitor ID'].apply(lambda x: [x]) # 转换回目标JSON结构并导出 target_data = {'My Setting': df.T.to_dict()} with open('target.json', 'w', encoding='utf-8') as f: json.dump(target_data, f, indent=4, ensure_ascii=False)
说明
- 两种方法均可实现将
ID和Competitor ID字段的值转为单元素列表的需求。 - 直接操作JSON的方式更轻量化,适合数据量不大的场景;通过DataFrame处理则更适配需要同时进行其他数据清洗或分析的场景。
内容的提问来源于stack exchange,提问作者Nicole L
相关产品推荐
相关产品推荐

