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

使用Poloniex API创建DataFrame遇ValueError: arrays must all be same length如何解决?

解决Poloniex API返回数据创建DataFrame时的ValueError问题

我来帮你搞定这个问题!你遇到的ValueError: arrays must all be same length是因为Poloniex的这个API返回的JSON结构没法直接用pd.read_json()直接解析成DataFrame,具体原因和解决方法如下:

问题原因

这个API返回的是一个包含两个独立数组的JSON对象:offers(借贷报价)和demands(借贷需求)。当你直接用pd.read_json()读取这个URL时,pandas会尝试把这两个数组当作DataFrame的两列,但这两个数组的长度大概率不一样,就会触发长度不匹配的错误。

解决方案

我们需要先手动获取并解析JSON数据,分别处理两个数组后再合并成最终的DataFrame,步骤如下:

1. 导入必要的库

import pandas as pd
import requests

2. 请求API并解析JSON

不要直接传给pd.read_json(),先通过requests获取数据并解析:

url = "https://poloniex.com/public?command=returnLoanOrders&currency=ETH"
# 发送请求并处理可能的网络错误
try:
    response = requests.get(url)
    response.raise_for_status()  # 捕获HTTP请求错误
    loan_data = response.json()
except requests.exceptions.RequestException as e:
    print(f"请求API时出错: {e}")
    exit()

3. 分别转换为DataFrame并添加类型标记

把offers和demands各自转成DataFrame,同时添加一个字段区分类型:

# 处理借贷报价
offers_df = pd.DataFrame(loan_data.get('offers', []))
offers_df['order_type'] = 'offer'

# 处理借贷需求
demands_df = pd.DataFrame(loan_data.get('demands', []))
demands_df['order_type'] = 'demand'

4. 合并两个DataFrame

用pd.concat()把两个DataFrame合并成一个:

final_df = pd.concat([offers_df, demands_df], ignore_index=True)
# 查看结果
print(final_df.head())

这样处理后,你就能得到一个包含所有借贷订单的DataFrame,而且不会再触发长度不匹配的错误了。

额外提示

  • 用loan_data.get('offers', [])而不是直接loan_data['offers']是为了防止API返回结构变化时出现KeyError,增强代码鲁棒性。
  • 加上try-except块可以捕获网络请求或JSON解析时的异常,让代码更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:46:58