减少数据帧操作中的循环时间

时间:2018-04-28 05:40:31

标签: python dataframe

要查看示例回复,请在浏览器https://bittrex.com/Api/v2.0/pub/market/GetTicks?marketName=BTC-ETH&tickInterval=thirtyMin上进行检查。我有275个值市场列表,并且time_series列表中有330个时间间隔。 GetTicks api有1000个dict列表。我只对那些time_series中的时间间隔符合' T' GetTicks api中的值。如果time_series不匹配' T' GetTicks api中的值然后我设置了' BV' /' L'在主df中为0.每个循环执行需要3秒,大约需要20-25分钟的执行时间。是否有更好的pythonic方法在更短的时间内构建这个主df?感谢您的帮助/建议。

我的代码--->

for (mkt, market_pair) in enumerate(market_list):
    getTicks = requests.get("https://bittrex.com/Api/v2.0/pub/market/GetTicks?marketName=" + str(
        market_pair) + "&tickInterval=thirtyMin")
    getTicks_result = (getTicks.json())["result"]
    print(mkt + 1, '/', len_market_list, market_pair, "API called", datetime.utcnow().strftime('%H:%M:%S.%f'))
    first_df = pd.DataFrame(getTicks_result)
    first_df.set_index('T', inplace=True)

    for tk, interval in enumerate(time_series):
        if interval in first_df.index:
            master_bv_df.loc[market_pair, interval] = first_df.loc[interval,'BV']
            bv_sh.cell(row=mkt + 2, column=tk + 3).value = first_df.loc[interval,'BV']
            master_lp_df.loc[market_pair, interval] = first_df.loc[interval,'L']
            lp_sh.cell(row=mkt + 2, column=tk + 3).value = first_df.loc[interval,'L']
        else:
            master_bv_df.loc[market_pair, interval] = master_lp_df.loc[market_pair, interval]=0
            bv_sh.cell(row=mkt + 2, column=tk + 3).value = lp_sh.cell(row=mkt + 2, column=tk + 3).value=0

0 个答案:

没有答案