2016-09-08 3 views
2

Я хочу прочитать файл f в кусках в dataframe. Вот часть кода, который я использовал.Как читать данные в кусках в кадре данных Python?

for i in range(0, maxline, chunksize): 
df = pandas.read_csv(f,sep=',', nrows=chunksize, skiprows=i) 
df.to_sql(member, engine, if_exists='append',index= False, index_label=None, chunksize=chunksize) 

Я получаю ошибку:

pandas.io.common.EmptyDataError: No columns to parse from file

Код работает только тогда, когда chunksize> = MaXLine (что суммарные строки в файле F). Однако, в моем случае, chunksize < = maxline.

Пожалуйста, сообщите об этом исправлению.

+0

Лучше смотреть в документ, прежде чем спрашивать. – PhilChang

+0

Я довольно новичок в Python и все еще нуждаюсь в небольшом ручном управлении. Извините за беспокойство и благодарность за терпение. – Geet

ответ

3

Я думаю, что лучше использовать параметр chunksize в read_csv. Кроме того, используйте concat с параметром ignore_index, из-за необходимости избежать дубликатов в index:

chunksize = 5 
TextFileReader = pd.read_csv(f, chunksize=chunksize) 

df = pd.concat(TextFileReader, ignore_index=True) 

См панды docs.

+0

Спасибо! Теперь я получаю df как TextFileReader. Следующий шаг моего кода требует, чтобы df был фреймворком данных. Как преобразовать TextFileReader в dataframe? – Geet

+0

Я обновляю ответ, пожалуйста, проверьте его. – jezrael

+0

Мои фактические данные - около 85 ГБ. Не будет ли конкатенация сделать datafram большой? Я хочу использовать chunksize для чтения и записи в кусках. Пожалуйста, порекомендуйте. – Geet