Если у меня есть файл csv, который слишком велик для загрузки в память с помощью pandas (в данном случае 35gb), я знаю, что можно обрабатывать файл в кусках с помощью chunksize.Загрузить фрейм данных pandas с chunksize, определяемый переменной столбца
Однако я хочу знать, можно ли изменить chunksize на основе значений в столбце.
У меня есть столбец ID, а затем несколько строк для каждого идентификатора с информацией, например:
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 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'), создавая другой файл для каждого уникального значения идентификатора. – blacksite
К сожалению, это невозможно, у меня нет доступа к базе данных. –
Это может быть PITA, но я думаю, что это сработает: что делать, если вы попытались использовать 'chunksize' прямо сейчас, перелистывая весь файл 35gb и создавая индивидуальный CSV для каждого уникального значения ID ('set (df ['ID'])')? Затем для каждой строки вашего более крупного файла вы пишете (читаете: добавьте) эту строку в существующий файл идентификатора, соответствующий идентификатору этой строки? Это было бы не слишком сложно закодировать, хотя я сомневаюсь, как долго это может занять ... Просто мысль! В противном случае, боюсь, я не могу больше помочь. – blacksite