Pandas中如何拆分API返回的嵌套JSON数组为指定列的DataFrame
解决方法
情况1:直接从API响应的蜡烛数据创建DataFrame
如果你的API响应是包含candles键的字典,先提取蜡烛列表,再用它创建DataFrame并指定列名:
import pandas as pd # 假设API响应已解析为字典格式 api_response = { "candles": [ ["2021-04-29T09:15:00", 1488.85, 1503.65, 1461, 1471.65, 12002248], ["2021-04-30T09:15:00", 1450, 1450, 1407.65, 1412.9, 17538562] ] } # 提取蜡烛数据列表 candles_list = api_response["candles"] # 创建DataFrame df = pd.DataFrame(candles_list) # 自定义列名(对应时间戳、开盘价、最高价、最低价、收盘价、成交量) df.columns = ["timestamp", "open", "high", "low", "close", "volume"] # 可选:将时间戳列转为datetime类型 df["timestamp"] = pd.to_datetime(df["timestamp"])
情况2:已生成单列表格,拆分嵌套数组为多列
如果已经得到只有一列的DataFrame(每一行是嵌套子数组),可以通过tolist()方法将列值展开为二维列表,再重新创建DataFrame:
import pandas as pd # 假设已有单列表格 single_col_df = pd.DataFrame({ "candles": [ ["2021-04-29T09:15:00", 1488.85, 1503.65, 1461, 1471.65, 12002248], ["2021-04-30T09:15:00", 1450, 1450, 1407.65, 1412.9, 17538562] ] }) # 拆分嵌套数组为多列 df = pd.DataFrame(single_col_df["candles"].tolist()) # 指定自定义列名 df.columns = ["timestamp", "open", "high", "low", "close", "volume"]
执行后,df会包含6个独立列,分别对应你指定的名称。
内容的提问来源于stack exchange,提问作者Sachin Gupta
相关产品推荐
相关产品推荐

