Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 将IbPy数据请求转换为数据帧_Pandas_Dataframe_Ibpy - Fatal编程技术网

Pandas 将IbPy数据请求转换为数据帧

Pandas 将IbPy数据请求转换为数据帧,pandas,dataframe,ibpy,Pandas,Dataframe,Ibpy,我有下面的代码,它使用IbPy从交互式代理下载历史数据,并将其保存到csv。我不想将其保存到csv,而是想直接将数据输入熊猫数据帧(绕过csv位) 有人能帮忙吗 from time import sleep, strftime, localtime from ib.ext.Contract import Contract from ib.opt import ibConnection, message new_symbolinput = ['ES', 'NQ'] newDataL

我有下面的代码,它使用IbPy从交互式代理下载历史数据,并将其保存到csv。我不想将其保存到csv,而是想直接将数据输入熊猫数据帧(绕过csv位)

有人能帮忙吗

from time import sleep, strftime, localtime  
from ib.ext.Contract import Contract  
from ib.opt import ibConnection, message  


new_symbolinput = ['ES', 'NQ']
newDataList = []  
dataDownload = []  

def historical_data_handler(msg):  
    global newDataList  
    print (msg.reqId, msg.date, msg.close)
    if ('finished' in str(msg.date)) == False:  
        new_symbol = new_symbolinput[msg.reqId]  
        dataStr = '%s, %s, %s' % (new_symbol, strftime("%Y-%m-%d", localtime(int(msg.date))), msg.close)  
        newDataList = newDataList + [dataStr]
    else:  
        new_symbol = new_symbolinput[msg.reqId]  
        filename = 'minutetrades' + new_symbol + '.csv'  
        csvfile = open('csv_day_test/' + filename,'w')  
        for item in newDataList:  
            csvfile.write('{} \n'.format(item))
        csvfile.close()  
        newDataList = []  
        global dataDownload  
        dataDownload.append(new_symbol)  

con = ibConnection()  
con.register(historical_data_handler, message.historicalData)  
con.connect()  

symbol_id = 0  
for i in new_symbolinput:  
    print (i)  
    qqq = Contract()  
    qqq.m_symbol = i  
    qqq.m_secType = 'FUT'  
    qqq.m_exchange = 'GLOBEX'  
    qqq.m_currency = 'USD'
    qqq.m_expiry = '201609'
    con.reqHistoricalData(symbol_id, qqq, '', '1 W', '1 day', 'TRADES', 1, 2)  

    symbol_id = symbol_id + 1  
    sleep(10)  

print (dataDownload) 
filename = 'downloaded_symbols.csv'  
csvfile = open('csv_day_test/' + filename,'w')  
for item in dataDownload:  
    csvfile.write('%s \n' % item)  
csvfile.close()
在def历史数据处理程序(msg)中,替换以下代码;这将直接写入数据帧

  else:
df_new = pd.DataFrame( columns=['Code', 'Date', 'Close'])
j = 0
for i in newDataList:
    df_new.loc[j] = i.split(',')
    j = j + 1
df_new.set_index('Date',inplace=True)
#print df_new
考虑将值msg.close直接写入df,而不是首先放入字符串并拆分。

更新答案:

要将条形图数据转换为数据帧,请执行以下操作:

# convert to pandas dataframe
df = util.df(bars)

我不太清楚你的代码在做什么。您能否显示/解释变量
dataDownload
包含的内容?一个可能的解决方案是将数据存储为字典,并在最终调用中
pd.DataFrame(dictionary)