嵌套JSON转Pandas DataFrame时支持用户自定义字典键的实现方案
动态提取JSON嵌套字段生成DataFrame
我明白你想要让脚本更灵活,不再固定提取price字段的value,而是让用户自己指定要提取的嵌套键(比如taste这类替代字段)。下面是调整后的完整实现方案:
import json import pandas as pd # 读取两个JSON文件 with open('JSON1.json','r') as f1: item1 = json.load(f1) with open('JSON2.json','r') as f2: item2 = json.load(f2) # 主动询问用户想要提取的目标键 target_key = input("请输入要替代price的目标键(例如taste):") # 定义水果列表,避免硬编码 fruits = ['apple', 'banana'] # 可选:添加异常处理,避免输入不存在的键导致报错 try: # 根据用户输入的键提取对应value v1s = [item1[fruit][target_key]['value'] for fruit in fruits] v2s = [item2[fruit][target_key]['value'] for fruit in fruits] except KeyError: print(f"出错啦!JSON文件里找不到{target_key}这个字段,请检查输入或文件内容~") exit() # 生成DataFrame并设置索引 df = pd.DataFrame({'value1': v1s, 'value2': v2s, 'key': fruits}).set_index('key') print(df)
关键调整说明:
- 用
input()函数主动获取用户输入的目标键,彻底替换了原来硬写死的'price' - 把水果列表单独抽成
fruits变量,后续要加新水果(比如orange)的话,只需要改这个列表就行,不用改多处代码 - 新增了异常处理逻辑,用户输入不存在的键时会给出友好提示,不会直接崩溃
- 用列表推导式简化了value的提取过程,代码更简洁易读
运行示例:
假设用户输入taste,且两个JSON文件里都包含taste字段,程序会自动提取对应值并输出类似这样的DataFrame:
value1 value2 key apple 8.5 7.2 banana 6.3 7.8
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

