У меня есть сценарий python, который считывает данные из TWS API (Interactive Brokers) и хочет сбросить данные в файл csv.
Сейчас он просто перезаписывает данные и печатает последнюю строку вместе с кучей других ценностей, которые мне не нужны.
Он отлично выводит значения с помощью print (df).
Код:
from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.common import *
from ibapi.contract import *
from threading import Timer
from ibapi.ticktype import *
import pandas as pd
import numpy as np
class TestApp(EWrapper, EClient):
def __init__(self):
EWrapper.__init__(self)
EClient.__init__(self, self)
def error(self, reqId, errorCode, errorString):
print("Error: ", reqId, " ", errorCode, " ", errorString)
def nextValidId(self, orderId):
self.start()
def contractDetails(self, reqId, contractDetails):
self.data = [contractDetails]
df = pd.DataFrame(self.data)
df.to_csv('options_test.csv')
print(df)
def contractDetailsEnd(self, reqId):
print("\ncontractDetails End\n")
def start(self):
#self.reqSecDefOptParams(1, "AAPL", "", "STK", 265598)
contract = Contract()
contract.symbol = 'AAPL'
contract.secType = 'OPT'
contract.exchange = 'SMART'
contract.currency = 'USD'
#contract.primaryExchange = 'NASDAQ'
contract.lastTradeDateOrContractMonth = '202010'
#contract.strike = 175
#contract.right = "C"
#contract.multiplier = "100"
global underlying
underlying = contract.symbol
self.reqMktData(1, contract, '106', False, False, [])
self.reqContractDetails(1, contract)
def stop(self):
self.done = True
self.disconnect()
def main():
app = TestApp()
app.nextOrderId = 0
app.connect('127.0.0.1', 7497, 123)
app.data = []
Timer(4, app.stop).start()
app.run()
if __name__ == "__main__":
main()
Я попытался использовать append (), и он выдал ошибку.
def contractDetails(self, reqId, contractDetails):
self.data = [contractDetails]
df = pd.append(self.data)
df.to_csv('options_test.csv')
print(df)
..raise AttributeError(f"module 'pandas' has no attribute '{name}'")
AttributeError: module 'pandas' has no attribute 'append'
Я просто хочу сохранить данные, полученные в "contractDetails", в CSV.