pd.DataFrame(res['result'][pair]) 上的 PyKrakenAPI KeyError
PyKrakenAPI KeyError on pd.DataFrame(res['result'][pair])
pykrakenapi 0.1.8版本存在该问题,0.1.9已修复
当将 Kraken 的 REST API 与 pykrakenapi
一起使用时,一些交易对(例如非常流行的 XBTUSD
)会产生 KeyError,即使 exists in Kraken's Asset Pair endpoint .
例如下面的代码
import krakenex
from pykrakenapi import KrakenAPI
timestamp = 1546300800000000000
pair = 'XBTUSD'
trades = k.get_recent_trades(pair=pair, since=timestamp, ascending=True)
导致以下错误:
File "C:\Users\TimStack\PycharmProjects\Kraken\lib\site-packages\pykrakenapi\pykrakenapi.py", line 704, in get_recent_trades
trades = pd.DataFrame(res['result'][pair])
KeyError: 'XBTUSD'
XBTUSD 对确实出现在 AssetPairs 端点中,但是:
此问题是由于 Kraken 使用不同的交易对名称造成的。在 XBTUSD
的情况下,这是 XXBTZUSD
。这可以说明如下:
>>> trades = api.query_public("Trades", {'pair': 'XBTUSD', 'since': 1546300800000000000, 'ascending': True})
>>> print(trades)
{'error': [], 'result': {'XXBTZUSD': [['3690.90000', '0.00400000', 1546300800.4732, 's', 'l', ''], ...
在正在调用的 pykrakenapi.py
函数中构造数据帧时产生错误:
def get_recent_trades(self, pair, since=None, ascending=False):
...
...
# create dataframe
trades = pd.DataFrame(res['result'][pair])
...
可以通过将 pair
的值更改为正确的键来解决此问题:
def get_recent_trades(self, pair, since=None, ascending=False):
...
...
# create dataframe
pair = list(res['result'].keys())[0]
trades = pd.DataFrame(res['result'][pair])
...
其中 list(res['result'].keys())[0]
等于 result
键下字典的第一个键。
pykrakenapi 0.1.8版本存在该问题,0.1.9已修复
当将 Kraken 的 REST API 与 pykrakenapi
一起使用时,一些交易对(例如非常流行的 XBTUSD
)会产生 KeyError,即使 exists in Kraken's Asset Pair endpoint .
例如下面的代码
import krakenex
from pykrakenapi import KrakenAPI
timestamp = 1546300800000000000
pair = 'XBTUSD'
trades = k.get_recent_trades(pair=pair, since=timestamp, ascending=True)
导致以下错误:
File "C:\Users\TimStack\PycharmProjects\Kraken\lib\site-packages\pykrakenapi\pykrakenapi.py", line 704, in get_recent_trades
trades = pd.DataFrame(res['result'][pair])
KeyError: 'XBTUSD'
XBTUSD 对确实出现在 AssetPairs 端点中,但是:
此问题是由于 Kraken 使用不同的交易对名称造成的。在 XBTUSD
的情况下,这是 XXBTZUSD
。这可以说明如下:
>>> trades = api.query_public("Trades", {'pair': 'XBTUSD', 'since': 1546300800000000000, 'ascending': True})
>>> print(trades)
{'error': [], 'result': {'XXBTZUSD': [['3690.90000', '0.00400000', 1546300800.4732, 's', 'l', ''], ...
在正在调用的 pykrakenapi.py
函数中构造数据帧时产生错误:
def get_recent_trades(self, pair, since=None, ascending=False):
...
...
# create dataframe
trades = pd.DataFrame(res['result'][pair])
...
可以通过将 pair
的值更改为正确的键来解决此问题:
def get_recent_trades(self, pair, since=None, ascending=False):
...
...
# create dataframe
pair = list(res['result'].keys())[0]
trades = pd.DataFrame(res['result'][pair])
...
其中 list(res['result'].keys())[0]
等于 result
键下字典的第一个键。