Удаление строк в CSV-файле (Python) - PullRequest
0 голосов
/ 07 марта 2020

Добрый вечер, у меня проблема с кодом, который я пишу, и я бы хотел получить совет. Я хочу сделать следующее:

  1. Удалить строки в файле .csv, которые содержат значение c (-3.4028 * 10 ^ 38)
  2. Создать новый файл .csv

Файл, с которым я работаю, имеет большой размер (12,2 ГБ, 87 миллионов строк) и содержит 6 столбцов, причем первые 5 столбцов представляют собой числовые значения, а последнее значение содержит текст.

Вот мой код:

import csv

directory = "/media/gman/Folder1/processed/test_removal1.csv"
with open('run1.csv', 'r') as fin, open(directory, 'w', newline='') as fout:

# define reader and writer objects
reader = csv.reader(fin, skipinitialspace=False)
writer = csv.writer(fout, delimiter=',')

# write headers
writer.writerow(next(reader))

# iterate and write rows based on condition
for i in reader:
    if (i[-1]) == -3.4028E38:
        writer.writerow(i)

При запуске я получаю следующее сообщение об ошибке:

Ошибка: строка содержит NUL

File "/media/gman/Aerospace_Classes/Programs/csv_remove.py", line 19, in <module>
for i in reader: Error: line contains NUL 

Я не уверен, как поступить. Если у кого-то есть предложения, пожалуйста, дайте мне знать. Спасибо.

1 Ответ

0 голосов
/ 08 марта 2020

Я понял это. Вот что я в итоге сделал:

#IMPORT LIBRARIES
import pandas as pd

#IMPORT FILE PATH
directory = '/media/gman/Grant/Maps/processed_maps/csv_combined.csv'

#CREATE DATAFRAME FROM IMPORTED CSV
data = pd.read_csv(directory)
data.head()
data.drop(data[data.iloc[:,2] < -100000].index, inplace=True) #remove rows that contain altitude values greater than -100,000 meters.
# this is to remove the -3.402823E038 meter altitude values that keep coming up.

#CONVERT PROCESSED DATAFRAME INTO NEW CSV FILE
df = data.to_csv(r'/media/gman/Grant/Maps/processed_maps/corrected_altitude_data.csv') #export good data to this file.

Я пошел с pandas, чтобы удалить строки, основанные на аргументе logi c, это сделало фрейм данных. Затем я экспортировал фрейм данных в CSV-файл.

...