Если у меня есть файл csv, который слишком велик для загрузки в память с помощью pandas (в данном случае 35 ГБ), я знаю, что можно обрабатывать файл кусками с размером chunksize.
Однако я хочу знать, можно ли изменить размер фрагмента на основе значений в столбце.
У меня есть столбец идентификатора, а затем несколько строк для каждого идентификатора с информацией, например:
ID, Time, x, y
sasd, 10:12, 1, 3
sasd, 10:14, 1, 4
sasd, 10:32, 1, 2
cgfb, 10:02, 1, 6
cgfb, 10:13, 1, 3
aenr, 11:54, 2, 5
tory, 10:27, 1, 3
tory, 10:48, 3, 5
ect...
Я не хочу разделять идентификаторы на разные части. например, будут обработаны фрагменты размером 4:
ID, Time, x, y
sasd, 10:12, 1, 3
sasd, 10:14, 1, 4
sasd, 10:32, 1, 2
cgfb, 10:02, 1, 6
cgfb, 10:13, 1, 3 <--this extra line is included in the 4 chunk
ID, Time, x, y
aenr, 11:54, 2, 5
tory, 10:27, 1, 3
tory, 10:48, 3, 5
...
Является ли это возможным?
Если нет, возможно, использовать библиотеку csv с циклом for по строкам:
for line in file:
x += 1
if x > 1000000 and curid != line[0]:
break
curid = line[0]
#code to append line to a dataframe
хотя я знаю, что это создаст только один фрагмент, а обработка циклов займет много времени.
SELECT * FROM ... WHERE ID == BLAH
), создавая разные файлы для каждого уникального значения ID. - person blacksite   schedule 14.02.2017chunksize
прямо сейчас, потоковое воспроизведение всего файла размером 35 ГБ и создание отдельного CSV для каждого уникального значения ID (set(df['ID'])
)? Затем для каждой строки в вашем большом файле вы записываете (читаете: добавляете) эту строку в существующий файл идентификатора, соответствующий идентификатору этой строки? Кодировать было бы несложно, хотя я сомневаюсь, сколько времени это может занять ... Просто мысль! В противном случае, боюсь, я ничем не смогу помочь. - person blacksite   schedule 14.02.2017