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

Python调用Binance API:DataFrame无法正常显示问题排查

问题分析与解决方案

核心问题

你的代码存在三个关键问题:

  • 函数无返回值,导致DataFrame创建失败:get_volume函数没有return语句,调用时默认返回None,所以print(get_volume('BTC'))会输出None,且pd.DataFrame(get_volume('BTC'))传入None无法生成有效表格。
  • 交易量计算错误:循环K线时仅将最后一根K线的交易量赋值给变量,得到的是单根K线的交易量,而非一天内所有5/15分钟K线的总交易量。
  • 变量作用域不合理:交易量变量定义在函数开头,未在每个交易对处理时重新初始化,存在数值残留的潜在风险。

修正后的代码

import pandas as pd
from binance.client import Client

def get_volume(symbol):
    volume_data = []
    prices = client.get_all_tickers()
    for coin in prices:
        if coin['symbol'].startswith(symbol) and coin['symbol'].endswith('USDT'):
            # 每个交易对独立初始化交易量变量
            total_15m = 0
            total_5m = 0
            
            # 累加15分钟K线总交易量
            klines_15m = client.get_historical_klines(coin['symbol'], Client.KLINE_INTERVAL_15MINUTE, "1 day ago")
            for kline in klines_15m:
                total_15m += float(kline[5])
            
            # 累加5分钟K线总交易量
            klines_5m = client.get_historical_klines(coin['symbol'], Client.KLINE_INTERVAL_5MINUTE, "1 day ago")
            for kline in klines_5m:
                total_5m += float(kline[5])
            
            # 收集当前交易对数据
            volume_data.append({
                '交易对': coin['symbol'],
                '15分钟总交易量': total_15m,
                '5分钟总交易量': total_5m
            })
            print(coin['symbol'], total_15m, total_5m)
    return volume_data

# 生成DataFrame
result_list = get_volume('BTC')
df = pd.DataFrame(result_list)
print(df)

修正说明

  1. 添加返回值:用列表volume_data收集所有交易对的结构化数据,函数返回该列表后可直接传入pd.DataFrame()生成表格。
  2. 累加总交易量:将赋值语句=改为累加+=,实现所有K线交易量的求和。
  3. 调整变量作用域:将交易量变量移至交易对循环内部,确保每个交易对的计算独立初始化。
  4. 简化条件判断:去掉冗余的== True,代码更简洁符合Python风格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:35:58