You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas展平MyFitnessPal数据集JSON列的技术求助

解决MyFitnessPal数据集JSON解析列转换问题

问题分析

你当前的代码仅提取了total路径下的内容,但如果aggregate_intake_goal解析后的JSON存在其他顶级键,或者total内部的键未正确展开,就会出现JSON键无法转为数据集列的情况。

解决方案

方案1:直接展开整个JSON列

如果aggregate_intake_goal解析后的JSON结构不复杂,直接对整个列执行json_normalize,无需指定record_path,所有顶级键会自动转为列:

import pandas as pd
import json

# 解析JSON字符串列
df['aggregate_intake_goal'] = df['aggregate_intake_goal'].apply(json.loads)

# 归一化整个JSON列
df_normalized = pd.json_normalize(df['aggregate_intake_goal'])

方案2:保留外层键+展开内层total数据

如果aggregate_intake_goal外层还有需要保留的字段(比如日期、用户标识等),用meta参数指定这些外层键,结合record_path展开total内的数据:

# 替换meta里的内容为实际存在的外层键,比如"date"、"user_id"
df_normalized = pd.json_normalize(
    data=df['aggregate_intake_goal'],
    record_path=['total'],
    meta=['date', 'user_id']
)

方案3:处理多层嵌套JSON

如果total内部还有嵌套结构,用sep参数指定嵌套键的分隔符,让嵌套键也展开为扁平化的列:

df_normalized = pd.json_normalize(
    data=df['aggregate_intake_goal'],
    record_path=['total'],
    sep='_'  # 嵌套键会转为类似"nutrients_calories"的列名
)

辅助验证:查看JSON结构

不确定JSON具体结构时,先打印一条解析后的JSON确认键的分布:

print(df['aggregate_intake_goal'].iloc[0])

内容的提问来源于stack exchange,提问作者Enigma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 23:25:01