Добавить строки из pandas df в новый csv, сохранив заголовки один раз? - PullRequest
0 голосов
/ 30 ноября 2018

Моя цель - открыть очень большой CSV-файл, прочитать его, а затем сделать что-то на подмножестве данных.В этом случае «stuff» записывает данные в пустой CSV, но в будущем он будет выполнять функции с данными по 200 строк за раз (по какой-то причине это экономит мое вычислительное время по сравнению с выполнением всей CSV черезфункции).

Моя текущая проблема заключается в том, что когда я пишу пустой CSV, если я использую header = False, у меня нет заголовков, но если я беру эту команду, у меня есть заголовок каждые 200 строк.Я хочу заголовок один раз наверху, если это возможно?

with open(csvFile, encoding = 'utf8', errors = 'ignore') as csv_file:
chunksize = 200
i = 0
j = 1
for df in pd.read_csv(csv_file, encoding = 'utf-8', chunksize=chunksize, iterator=True):
      df.index += j
      i+=1
      df.to_csv('test.csv', mode = 'a', sep = ',', encoding='utf-8', header=False, index=False)
      j = df.index[-1] + 1  

1 Ответ

0 голосов
/ 30 ноября 2018

Просто введите header=True в первый раз, когда вы пишете.

with open(csvFile, encoding = 'utf8', errors = 'ignore') as csv_file:
    chunksize = 200
    i = 0
    j = 1
    for df in pd.read_csv(csv_file, encoding = 'utf-8', chunksize=chunksize, iterator=True):
        df.index += j
        i += 1
        if i == 1:
            df.to_csv('test.csv', mode = 'w', sep = ',', encoding='utf-8', header=True, index=False)
        else:
            df.to_csv('test.csv', mode = 'a', sep = ',', encoding='utf-8', header=False, index=False)
        j = df.index[-1] + 1 
...