【问题标题】:Python script works on jupyter notebook but not on localPython脚本适用于jupyter笔记本但不适用于本地
【发布时间】:2022-01-26 15:58:55
【问题描述】:

代码在 replit.com 和 jupyter notebook 中运行良好,但不适用于我的本地环境。

我不明白为什么。 它要么说:名称'elem'未定义(第61行)或空DataFrame列:[价格]索引:[]。

代码:

...


url = "https://www.bitmex.com/api/v1/trade"
filters = {
    'startTime':  td 
}
params = {
    'symbol': '.BVOL24H',
    'filter': json.dumps(filters),
}
response = requests.get(url, params=params)


bvol24_list = []
for elem in response.json():

    elem['timestamp'] = pd.to_datetime(elem['timestamp'], format="%Y-%m-%d %H:%M")
    mins = elem['timestamp'].strftime("%Y-%m-%d %H:%M")
    bvol24_list.append([elem['price'], mins])



vol_df = pd.DataFrame(data=bvol24_list, columns=['price', 'timestamp'])
vol_df = vol_df.set_index('timestamp')
print(elem['symbol'])
print(vol_df)

它在 jupyter notebook 上运行良好:

.BVOL24H
              price
timestamp              
2021-12-27 17:15   1.97
2021-12-27 17:20   1.97
...
2021-12-27 18:10   1.99

编辑:由于不同的时区和对其应用的增量,它不起作用,列表是空的,因为它无法获取数据,因此在“分配之前”引用了局部变量。

【问题讨论】:

  • 可能是因为response.json()是一个空列表

标签: python pandas dataframe


【解决方案1】:

您可以尝试确定“requests.get(url, params=params)”是否返回预期值。首先查看响应的 status_code:

response.status_code

如果代码不是 200,则调用本身可能存在问题。

如果代码是 200,请检查响应中实际包含的内容:

print(response.json())

【讨论】:

  • 我确实试过了,代码是 200 但列表在 empy. UnboundLocalError: local 'ele' referenced before assignment,但我确实在任何在线 IDE 上工作。我也尝试将全局变量分配给 'ele' 但它返回错误。
  • @Jordan 如果您删除过滤器和/或参数会返回什么响应?
  • @Jordan 另外,您在本地浏览器中转到“bitmex.com/api/v1/trade”时是否看到报价信息?
  • 我编辑了我的帖子,问题解决了,我尝试删除过滤器,它工作正常,我注意到我有不同的时区,这就是为什么它在 jupyter(在线)而不是我的本地环境。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多