Pandas 将IbPy数据请求转换为数据帧
我有下面的代码,它使用IbPy从交互式代理下载历史数据,并将其保存到csv。我不想将其保存到csv,而是想直接将数据输入熊猫数据帧(绕过csv位) 有人能帮忙吗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
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)
。