我有一个for
循环,它位于Python中面向对象的程序中。
get_data
发出API请求,以检索上面列表符号中每个符号的信息。 extract_data(self,response,symbol)
具有参数响应,该参数响应是API请求的结果,以及我与调试模块一起用于跟踪for循环的参数符号。 此for
循环从API中提取数据,最后将其附加到名为 tickers 的列表中。
symbols = ["ETHBTC","LTCBTC","BNBBTC","NEOBTC"]
def __init__(self,interval):
self.interval = interval
for symbol in symbols:
ohlc = self.get_data(symbol)
self.extract_data(ohlc,symbol)
def extract_data(self,response,symbol):
all_tickers = pd.DataFrame()
tickers = []
data = response.json()
for item in data:
open_ = item[1]
high = item[2]
low = item[3]
close = item[4]
volume = float(item[5])
timestamp = item[6]
timestamp = timestamp / 1000
date = datetime.datetime.fromtimestamp(timestamp=timestamp).strftime('%Y-%m-%d')
tickers.append({"close":close,"date":date})
logging.debug("Download {} day prices of ohlc data from {} pair".format(len(tickers),symbol))
all_tickers = all_tickers.append(pd.DataFrame(tickers))
我已尝试多次使用不同的结构来制作数据框,每个列中每个资产的价格和日期作为索引,但目前我无法达到解决方案。
非常欢迎一些建议或建议。
答案 0 :(得分:0)
几步 - 首先修改extract_data
以返回所需数据的元组列表,包括符号
def extract_data(self,response,symbol):
tickers = []
...
for item in data:
...
tickers.append((close, date, symbol))
...
return tickers
然后,当你遍历你的符号时,创建一个" master"列表。
data = []
for symbol in symbols:
ohlc = self.get_data(symbol)
symb_data = self.extract_data(ohlc,symbol)
data = data + symb_data
应该以
之类的东西结束[(45, datetime.date(2017, 12, 23), 'ETHBTC'),
(46, datetime.date(2017, 12, 24), 'ETHBTC'),
(47, datetime.date(2017, 12, 23), 'LTCBTC'),
(48, datetime.date(2017, 12, 24), 'LTCBTC'),
(49, datetime.date(2017, 12, 23), 'BNBBTC'),
(50, datetime.date(2017, 12, 24), 'BNBBTC'),
(51, datetime.date(2017, 12, 23), 'NEOBTC'),
(52, datetime.date(2017, 12, 24), 'NEOBTC')]
最后创建数据框并转动表
df = (pd.DataFrame(data,
columns=["close", "date", "ticker"])
.pivot(index="date",
columns="ticker",
values="close"))
print(df)
获得
ticker BNBBTC ETHBTC LTCBTC NEOBTC
date
2017-12-23 49 45 47 51
2017-12-24 50 46 48 52