我有以下JSON文件:

{"data":
    {"success":true,
    "timeseries":true,
    "start_date":"2022-10-01",
    "end_date":"2022-10-04",
    "base":"EUR",
    "rates":
        {"2022-10-01":{"NG":0.1448939471560284},
        "2022-10-02":{"NG":0.14487923291390148},
        "2022-10-03":{"NG":0.1454857922753868},
        "2022-10-04":{"NG":0.1507352356663182}},
    "unit":"per MMBtu"}}

我正试图将这个JSON正常化成一个Pandas 数据帧.这就是我try 过的:

import pandas as pd
import json

with open(r'C:\Users\Gio\Desktop\tools\python\acrodata.json','r') as f:
    data = json.loads(f.read())

df_flatten = pd.json_normalize(data, record_path =['data']['rates'], meta=['success', 'timeseries', 'start_date','end_date','base'])
print(df_flatten)

我收到以下错误:

TypeError: list indices must be integers or slices, not str

推荐答案

try :

df = pd.DataFrame(data["data"])
df = pd.concat([df, df.pop("rates").apply(pd.Series, dtype=str)], axis=1)
print(df)

打印:

            success  timeseries  start_date    end_date base       unit                   NG
2022-10-01     True        True  2022-10-01  2022-10-04  EUR  per MMBtu   0.1448939471560284
2022-10-02     True        True  2022-10-01  2022-10-04  EUR  per MMBtu  0.14487923291390148
2022-10-03     True        True  2022-10-01  2022-10-04  EUR  per MMBtu   0.1454857922753868
2022-10-04     True        True  2022-10-01  2022-10-04  EUR  per MMBtu   0.1507352356663182

Python相关问答推荐

pysnmp—lextudio使用next()和getCmd()生成器导致TypeError:tuple对象不是迭代器''

在Google Drive中获取特定文件夹内的FolderID和文件夹名称

如何训练每一个pandaprame行的线性回归并生成斜率

如何设置nan值为numpy数组多条件

极点替换值大于组内另一个极点数据帧的最大值

如何提高Pandas DataFrame中随机列 Select 和分配的效率?

如何从数据框列中提取特定部分并将该值填充到其他列中?

Stats.ttest_ind:提取df值

在聚合中使用python-polars时如何计算模式

函数()参数';代码';必须是代码而不是字符串

在Pandas 中,有没有办法让元组作为索引运行得很好?

nameError_C未定义

有可能得到事实的最后特征

Pandas 中的每行布尔运算

没有目标的验证数据

如何在子窗口中正确设置和获取tkinter旋转框的值?

基于直方图箱的样本数据

导入错误:无法导入PerfetoLibrary

匹配具有给定异常的给定格式的所有字符串的正则表达式

ValueError:将字符串转换为Fernet密钥时,Fernet密钥必须是32个URL安全的Base64编码字节.(&Q)