удаление ненужных столбцов и строк в CSV-файле и сохранение с использованием Python
Я хочу удалить ненужные столбцы (2-й столбец) и бесполезные строки (первые три и последние три строки) и создать новый CSV-файл, а затем сохранить этот новый. и Как я могу иметь дело с файлом CSV, который имеет более 10 бесполезных столбцов и бесполезных строк?
(при условии, что бесполезные ряды расположены только сверху или снизу, а не в середине)
(и я также предполагаю, что все строки, которые мы хотим использовать, имеют имя первого элемента, начинающееся с ‘a_’)
Могу ли я получить решение без использования numpy или панд? Благодарность!
3 ответа
Предполагая, что у вас есть один или несколько нежелательных столбцов, а искомые строки начинаются с «a_».
import csv with open('filename.csv') as infile: reader = csv.reader(infile) header = next(reader) data = list(reader) useless = set(['uless_col', 'n_con']) # Let's say there are 2 useless columns mask, new_header = zip(*[(i,name) for i,name in enumerate(header) if name not in useless]) #(0,2) - column mask #('out_gate', 'in_gate') - new column headers new_data = [[row[i] for i in mask] for row in data] # Remove unwanted columns new_data = [row for row in new_data if row[0].startswith("a_")] # Remove unwanted rows with open('filename.csv', 'w') as outfile: writer = csv.writer(outfile) writer.writerow(new_header) writer.writerows(new_data)
Вы можете попробовать это:
import csv data = list(csv.reader(open('filename.csv'))) header = [data[0][0]]+data[0][2:] final_data = [[i[0]]+i[2:] for i in data[1:]][3:-3] with open('filename.csv', 'w') as f: write = csv.writer(f) write.writerows([header]+final_data)
out_gate,in_gate,n_con a,b,1 a,b,3 b,a,2 b,c,4 c,a,5 c,b,5 c,b,3 c,a,4 d,c,2 d,c,3 d,b,2
Ниже решение использует панд.
Как подсказывает функция удаления панд данных, Вы можете сделать следующее:
import pandas as pd df = pd.read_csv("csv_name.csv") df.drop(columns=['ulesscol'])
Выше код рассматривает удаление столбцов, вы можете удалить строки по индексу как:
Кроме того, не читайте в столбце в первую очередь:
df = pd.read_csv("csv_name.csv", usecols=["out_gate", "in_gate", "n_con"])
Удаление первой строки файла CSV
Как бы я удалил первую строку файла CSV в python, первые несколько строк моего файла CSV:
Domain Name, ItemID, Auction Type, Time Left, Price, Bids, Domain Age, Traffic,ValuationPrice TICKETFINE.COM,134774365,Bid,05/09/2014 08:00 AM (PDT),$100,0,0,0,$0 CREATINGMY.COM,134774390,Bid,05/09/2014 08:00 AM (PDT),$500,0,0,0,$0 WPTHEMEHELP.COM,134774444,Bid,05/09/2014 08:00 AM (PDT),$45,1,0,0,$0 APK-ZIPPY.COM,134774445,Bid,05/09/2014 08:00 AM (PDT),$10,0,0,0,$0 FAMILYBUZZMARKETING.COM,134689583,Bid,05/09/2014 08:00 AM (PDT),$90,0,0,0,$0 AMISRAGAS.COM,134689584,Bid,05/09/2014 08:00 AM (PDT),$35,0,0,0,$0
5 ответов
with open("test.csv",'r') as f: with open("updated_test.csv",'w') as f1: f.next() # skip header line for line in f: f1.write(line)
Для кого-то еще подхватил эту ошибку:
AttributeError: '_io.TextIOWrapper' object has no attribute 'next' python
В Python3 объект текстового файла не имеет next() функция. Так что вы не можете позвонить f.next() ,
Вместо этого вы должны использовать f.readline() как указано в этом ответе.
Или вы можете использовать встроенный next(f) который @vrjr упоминается в комментарии, и показан в этом ответе.
Это то, что я делаю, когда хочу пропустить чтение первой строки CSV.
Все, что нужно сделать, это позвонить next() функция объекта CSV, в данном случае — read , а затем указатель на читателя будет на следующей строке.
import csv try: read = csv.reader(f) read.next() # Skip the first 'title' row. for r in read: # Do something finally: # Close files and exit cleanly f.close()
Надеюсь, это довольно просто для ваших целей!
Удаление столбцов и строчек в csv
Здравствуйте!
Подскажите пожалуйста как удалить первые три столбца и определенные строки, разделенные запятыми, в csv файле?
Названия столбцы не имеют.
Удаление строчек и столбцов матрицы заполненных только отрицательными элементами
Здравствуйте! Помогите пожалуйста заставить программу работать правильно! Задание: удалять со.
Размножить .csv файл с заменой 2 строчек
Камрады! Имеется .csv вот такой структуры LOT 22137D4UQV OPERATION T32-TEST-1-AMB 10 0.
Вывести номера строчек и столбцов
1. Дана квадратная целочисленная матрица С. Если в ней есть строки, со-стоящие из нулей, то.
Удаление строчек
Будьте добры, помогите новичку! Надо написать макрос, чтобы не листе удалялись строчки, в которыхь.
Читаешь файл, каждую строку перегоняешь в массив (через split или csv reader), берешь от этих массивов слайсы ([3:]), записываешь в файл (‘,’.join(row))
alex white, а можно пример кода.
Добавлено через 30 минут
with open('file.csv') as csvfile: csvv = csv.reader(csvfile, delimiter=',', quotechar='"') for row in csvv: print(','.join(row[3:]).split(")
Сообщение от New Life
Здравствуйте!
Подскажите пожалуйста как удалить первые три столбца и определенные строки, разделенные запятыми, в csv файле?
Названия столбцы не имеют.
Создаешь новый файл, читаешь старый и из него копируешь в новый то что интересует. Когда все завершил закрываешь файлы, удаляешь старый, переименовываешь новый.
Avazart, да, это все очевидно, вопрос был в другом.
Добавлено через 19 часов 41 минуту
alex white, как теперь удалить лишние строки в csv файле?
если данные в формате
_запятая_табуляция_значение_запятая
то выбираете первые три и удаляете, по строчно
пишите в НОВЫЙ файл
если данные в формате
_запятая_пробел_значение_запятая
то это сложнее =) так как в данных (если) встречаются фразы, могут возникать сложности и лучше разделитель делать запятую
Сообщение от New Life
Ну реально — все ж уже рассказали.
with open("test2.csv",newline='') as source,open("test22.csv", "w", newline='') as dest: reader = csv.reader(source, delimiter=';') writer = csv.writer(dest,delimiter=';') #for _ in range(3): next(reader) # так можно пропускать строки с начала файла в нужном количестве skip_lines = [1,4,6] # пропускаем выборочно: 1 4 и 6 строку for line,row in enumerate(reader,1): if line in skip_lines: continue writer.writerow(row[3:]) # пропускаем первые три столбца каждой строки
http://python.su/forum/topic/33192/?page=3 http://python.su/forum/topic/3. ost-181554 и ниже разбирали экспорт товаров из 1С из убитой вирусом базы
там ребята помогли собрать все в csv а затем обработать csv
примерно то же самое =) и у вас
Как сделать нумерацию столбцов и строчек в шахматной доске?
Вот код: import tkinter as tk number_of_rows = number_of_columns = int(input("Введите.
Удаление строчек из модели
Представим ситуацию — есть 10 предметов. Список этих предметов хранится в БД. Моя задача в том.
Удаление строчек с реестра
доброго времени суток. подскажите плз, как удалить определенное значене try
Найти наименьший элемент в каждой строчке таблицы, 10 строчек, 20 столбцов
Помогите найти наименьший элемент в каждой строчке таблицы, 10 строчек, 20 столбцов
Удаление ненужных строчек из файла
Создал такую програму, она должна удалять коментари из кода с++ который записаный в файле.
Удаление первой строки файла CSV
Как удалить первую строку CSV-файла в python, первые несколько строк моего CSV-файла:
Domain Name, ItemID, Auction Type, Time Left, Price, Bids, Domain Age, Traffic,ValuationPrice TICKETFINE.COM,134774365,Bid,05/09/2014 08:00 AM (PDT),$100,0,0,0,$0 CREATINGMY.COM,134774390,Bid,05/09/2014 08:00 AM (PDT),$500,0,0,0,$0 WPTHEMEHELP.COM,134774444,Bid,05/09/2014 08:00 AM (PDT),$45,1,0,0,$0 APK-ZIPPY.COM,134774445,Bid,05/09/2014 08:00 AM (PDT),$10,0,0,0,$0 FAMILYBUZZMARKETING.COM,134689583,Bid,05/09/2014 08:00 AM (PDT),$90,0,0,0,$0 AMISRAGAS.COM,134689584,Bid,05/09/2014 08:00 AM (PDT),$35,0,0,0,$0
with open("test.csv",'r') as f: with open("updated_test.csv",'w') as f1: f.next() # skip header line for line in f: f1.write(line)
Это то, что я делаю, когда хочу пропустить чтение первой строки CSV.
Все, что нужно сделать, это вызвать функцию next() объекта CSV, в этом случае – read , а затем указатель на читатель будет на следующей строке.
import csv try: read = csv.reader(f) read.next() # Skip the first 'title' row. for r in read: # Do something finally: # Close files and exit cleanly f.close()
Надеюсь, что это довольно чисто для ваших целей!
Для кого-то еще эта ошибка:
AttributeError: '_io.TextIOWrapper' object has no attribute 'next' python
В Python3 объект текстового файла не имеет функции next() . Поэтому вы не можете вызвать f.next() .
Вместо этого вы должны использовать f.readline() как указано в этом ответе .
Или вы можете использовать встроенный next(f) который @vrjr указан в комментарии, и показан в этом ответе .
Вы открываете его и повторно сохраняете его с тем же именем?
В противном случае вы можете прочитать его без чтения в первой строке и записи в новый файл без этой строки.
- Прочитайте файл по очереди
- Напишите каждую строку в новый файл, опустив первый
- замените первый файл вторым
- Python «for in» цикл для печати последнего элемента в списке
- как обнаружить капли и обрезать их в png-файлы?
- TypeError: ‘str’ не поддерживает интерфейс буфера
- Проблемы с преобразованием строки из строки в int python
- Список переменных внутри строки
- если в пользовательском вводе есть str (‘a’) или str (‘b’) или str (‘c’), тогда сделайте somthing
- Какова максимальная длина строки python?
- Отображение форматирования Sig fig с переменными сиг-фигами
- Ошибка строки Python
- Соответствие ввода и вывода на языке Python
- эффективно проверяя, что строка состоит из одного символа в Python