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

求助:如何将嵌套JSON转换为指定结构的Pandas DataFrame

解决方案

先明确你的JSON结构大概是这样(方便对应代码逻辑):

{
  "dateTime": "2024-01-01T00:00:00",
  "minutes": [
    {"value": 12.3, "minute": "2024-01-01 00:01:00"},
    {"value": 15.6, "minute": "2024-01-01 00:02:00"}
  ]
}

以下是具体实现步骤:

1. 读取并解析JSON数据

可以用两种方式处理,根据你的JSON实际结构选择:

方式一:直接用Pandas读取提取数组

import pandas as pd

# 读取JSON文件
raw_data = pd.read_json('你的文件路径.json')

# 提取外层的minutes数组,转为DataFrame
df = pd.DataFrame(raw_data['minutes'].iloc[0])

方式二:用json模块加载后处理(适合复杂嵌套场景)

import json
import pandas as pd

with open('你的文件路径.json', 'r', encoding='utf-8') as f:
    json_data = json.load(f)

# 提取minutes数组生成DataFrame
df = pd.DataFrame(json_data['minutes'])

2. 格式化minute列

先将minute字段转为datetime类型,再转换成你需要的YYYY-MM-DD HH:MM:SS格式:

# 转换为datetime类型(自动识别大部分标准格式)
df['minute'] = pd.to_datetime(df['minute'])

# 转为指定格式的字符串(如果不需要字符串格式,可跳过这步,保留datetime类型更适合后续分析)
df['minute'] = df['minute'].dt.strftime('%Y-%m-%d %H:%M:%S')

3. 保留目标列(可选)

如果生成的DataFrame有多余列,直接筛选需要的列即可:

df = df[['minute', 'value']]

完整示例代码

import pandas as pd

# 读取并处理JSON
raw_data = pd.read_json('你的文件路径.json')
df = pd.DataFrame(raw_data['minutes'].iloc[0])

# 格式化时间列
df['minute'] = pd.to_datetime(df['minute']).dt.strftime('%Y-%m-%d %H:%M:%S')

# 输出结果
print(df.head())

常见问题排查

  • 如果raw_data['minutes'].iloc[0]报错,说明你的JSON外层是数组结构(比如包含多个带dateTime和minutes的对象),改用pd.json_normalize处理:
df = pd.json_normalize(json_data, record_path='minutes')
  • 如果minute字段原始格式不标准,在pd.to_datetime中指定格式参数,比如原始是DD/MM/YYYY HH:MM:
df['minute'] = pd.to_datetime(df['minute'], format='%d/%m/%Y %H:%M')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:18:39