Как удалить строки со ВСЕМИ нулевыми значениями, но не с нулями С ненулевыми значениями - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть CSV-файл со следующими значениями:

0,0,0,0,October 29 2018 16:35:04
0,1,2,0,October 30 2018 11:40:04
0,0,0,0,November 25 2018 04:20:13

Я хотел удалить строки с нулевыми значениями в первых 4 столбцах:

0,0,0,0,October 29 2018 16:35:04 #remove this
0,1,2,0,October 30 2018 11:40:04 #this should stay
0,0,0,0,November 25 2018 04:20:13 #remove this

Ответы [ 2 ]

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

Есть много способов сделать то, что вы просите, но у вас есть пара задач:

  • прочитайте .csv, вы можете сделать это с csv.reader
  • просмотрите все его содержимое, вы можете сделать это с помощью простой for петли
  • проверьте некоторые условия, вам нужно проверить, является ли целочисленное значение 0, int(row[col]) == 0
  • писать строки, которые удовлетворяют условиям, в новый .csv, вы можете сделать это с помощью csv.writer

Вот рабочий скрипт, который делает все это, не требуя внешних библиотек, кроме стандартных csv one:

from csv import reader, writer

with open('input.csv', 'r') as input_file:
    with open('output.csv', 'w', newline='') as output_file:
        csv_in = reader(input_file)
        csv_out = writer(output_file)
        for row in csv_in:
            if not all([int(row[col]) == 0 for col in range(0, 4)]):
                csv_out.writerow(row)
0 голосов
/ 14 ноября 2018

Использование IIUC df[...]:

print(df[~(df[df.columns[:4]]==0).all(1)])

Чуть лучше (благодаря @jpp), используйте iloc:

print((df.iloc[:, :4] == 0).all(1))

Оба Вывод:

   0  1  2  3                         4
1  0  1  2  0  October 30 2018 11:40:04

Столбцы для вывода могут быть неправильными, потому что я не знаю фактических.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...