对于按列填充数据帧的循环不起作用

问题描述 投票:0回答:1

我有一个qazxsw poi循环,它位于Python中面向对象的程序中。

  1. 首先,函数for发出API请求以检索上面列表符号中的每个符号的信息。
  2. 其次,函数get_data具有参数响应,该参数响应是API请求的结果,以及我与调试模块一起用于跟踪for循环的参数符号。

这个extract_data(self,response,symbol)循环从API中提取数据,最后将其附加到称为代码的列表中。

for

我已尝试多次使用不同的结构来制作数据框,每个列中每个资产的价格和日期作为索引,但目前我无法达到解决方案。

一些建议或建议将非常受欢迎。

python api pandas for-loop dataframe
1个回答
0
投票

几步 - 首先修改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)) 以返回所需数据的元组列表,包括符号

extract_data

然后,当您遍历符号时,创建一个“主”列表。

def extract_data(self,response,symbol):
    tickers = []
    ... 

    for item in data:
        ...
        tickers.append((close, date, symbol))

    ...

    return tickers

最终会有类似的东西

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)
© www.soinside.com 2019 - 2024. All rights reserved.