如何将特定JSON文件转换为包含指定列的DataFrame?
没问题,我来帮你搞定这个JSON转指定列DataFrame的需求!下面用Python的pandas库(处理这类数据最常用的工具)分场景给出解决方案:
解决方案
场景1:JSON键名和目标列名完全匹配
如果你的JSON文件结构是直接包含目标列的键(比如每个条目都是扁平结构),示例JSON如下:
[ {"hour": 8, "frappucino": 2, "soda": 0, "coffee": 15, "tea": 5, "water": 3, "milkshake": 1, "nothing": 0, "sandwich": 4, "pie": 2, "muffin": 3, "cookie": 6}, {"hour": 9, "frappucino": 5, "soda": 2, "coffee": 22, "tea": 8, "water": 4, "milkshake": 0, "nothing": 1, "sandwich": 7, "pie": 3, "muffin": 5, "cookie": 9} ]
转换代码非常简洁:
import pandas as pd # 读取JSON文件 df = pd.read_json("your_file.json") # 强制指定列的顺序(确保和你要求的完全一致) target_columns = ["hour", "frappucino", "soda", "coffee", "tea", "water", "milkshake", "nothing", "sandwich", "pie", "muffin", "cookie"] df = df[target_columns] # 查看转换结果 print(df.head())
场景2:JSON结构嵌套/键名不匹配
如果你的JSON是嵌套结构,或者键名和目标列不一致(比如把饮品和食物分在不同子对象里),示例JSON如下:
[ {"time_hour": 8, "drinks": {"frap": 2, "soda": 0, "coffee": 15, "tea":5, "water":3, "milkshake":1, "none":0}, "food": {"sandwich":4, "pie":2, "muffin":3, "cookie":6}}, {"time_hour":9, "drinks": {"frap":5, "soda":2, "coffee":22, "tea":8, "water":4, "milkshake":0, "none":1}, "food": {"sandwich":7, "pie":3, "muffin":5, "cookie":9}} ]
我们可以手动映射字段,确保数据对应到正确的列:
import pandas as pd import json # 读取并加载JSON数据 with open("your_file.json", "r") as f: raw_data = json.load(f) # 逐个处理条目,映射到目标列 processed_data = [] for item in raw_data: processed_item = { "hour": item.get("time_hour", 0), # 缺失字段用0填充,可按需修改默认值 "frappucino": item["drinks"].get("frap", 0), "soda": item["drinks"].get("soda", 0), "coffee": item["drinks"].get("coffee", 0), "tea": item["drinks"].get("tea", 0), "water": item["drinks"].get("water", 0), "milkshake": item["drinks"].get("milkshake", 0), "nothing": item["drinks"].get("none", 0), "sandwich": item["food"].get("sandwich", 0), "pie": item["food"].get("pie", 0), "muffin": item["food"].get("muffin", 0), "cookie": item["food"].get("cookie", 0) } processed_data.append(processed_item) # 转换为DataFrame df = pd.DataFrame(processed_data) # 查看结果 print(df.head())
小提示
- 记得把代码里的
"your_file.json"替换成你实际的文件路径。 - 如果JSON里有缺失字段,
get()方法可以设置默认值(示例用的0),避免程序报错。 - 如果你的JSON结构更特殊,可以根据实际情况调整字段映射的逻辑。
内容的提问来源于stack exchange,提问作者L.B
相关产品推荐
相关产品推荐

