Мой код:
import wrds
db = wrds.Connection()
compustatq = db.raw_sql("""
select *
from comp.fundq
""")
compustatq.to_csv('path.csv',index=False)
Проблема в том, что набор данных настолько велик, что у меня закончилась оперативная память. Поэтому я думал, можно ли загружать/сохранять данные непосредственно на диске? Следовательно, избегая двухэтапной процедуры загрузки в фрейм данных, а затем экспортируя в файл csv.
вы можете использовать библиотеку csv
для этого. это встроенная библиотека python. Я не знаю, какой тип является вашим compustatq
. но найдите свой способ прочитать его по каждой строке.
используйте его вот так:
import csv
writer = csv.writer(open('path.csv', 'wb+'), dialect='excel')
for row in compustatq:
writer.writerow([str(v) for v in row])
ref: csv
Я просто прочитал исходный код wrds.Connection.raw_sql
. он сообщает, что ваш compustatq
является экземпляром pandas.DataFrame. Таким образом, вы все равно можете использовать метод to_csv
но несколько иначе:
f = open('path.csv', 'wb+')
for i in xrange(len(compustatq)):
f.write(df[i:i+1].to_csv(header=i==0))
f.close()