将深度嵌套的JSON数据转换为Pandas数据框架



如何将此JSON数据(https://api.llama.fi/summary/fees/lyra?dataType=dailyFees)转换为pandas数据框架?https://data.page/json/csv在上传文件时做得非常好,我如何修改我的脚本来完成这一点?

# Initialize an empty list to store the exploded and normalized dataframes
df_list = []
# Iterate over the columns of the dataframe
for col in df.columns:
# Check if the column contains lists
if df[col].apply(type).eq(list).any():
# Explode the column
df1 = df.explode(col, ignore_index=True)
# Normalize the dataframe
df2 = pd.json_normalize(json.loads(df1.to_json(orient="records")))
df_list.append(df2)   
result = pd.concat(df_list) 
else:
result = df_list.append(df) 
result = pd.concat(df_list)
# Check if the dataframe contains any columns with dicts
if result.applymap(type).eq(list).any().any():
# Get the labels of the columns with dicts
list_columns = result.applymap(type).eq(list).any().index[result.applymap(type).eq(list).any()].tolist()
result = result.drop(list_columns, axis=1)   
else:
result
result

使用json. normalized ():

import json
import pandas as pd
import requests

url = "https://api.llama.fi/summary/fees/lyra?dataType=dailyFees"
with requests.Session() as request:
response = request.get(url)
if response.status_code != 200:
print(response.raise_for_status())
data = json.loads(response.text)
df = (pd
.json_normalize(data=data)
.explode("totalDataChart")
.explode("totalDataChartBreakdown")
.explode("totalDataChartBreakdown")
.explode("audit_links")
.explode("totalDataChart")
.explode("chains")
).reset_index(drop=True)
df = df.join(pd.json_normalize(df["totalDataChartBreakdown"])).drop("totalDataChartBreakdown", axis=1)
df.columns = df.columns.str.split(".").str[-1]
print(df)

最新更新