Как удалить только одну строку в CSV с помощью Python?
В этом уроке мы научимся удалять только одну строку в CSV с помощью Python. Мы будем использовать библиотеку Pandas. Pandas — библиотека с открытым исходным кодом для анализа данных; это одна из самых популярных библиотек Python для исследования данных и аналитической информации. Он включает в себя несколько функций для выполнения операций с наборами данных. Его можно комбинировать с другими библиотеками, такими как NumPy, для выполнения определенных функций с данными.
Мы будем использовать метод drop() для удаления строки из любого файла csv. В этом уроке мы проиллюстрируем три примера удаления строки из файла csv, используя тот же метод. К концу этого руководства вы познакомитесь с этой концепцией и сможете удалить строку из любого файла CSV.
Синтаксис
Это синтаксис для удаления нескольких строк из массива.
#drop method data = pd.read_csv("my file") data = data.drop(data.index[index_number]) print(data)
В этом синтаксисе мы сначала читаем фрейм данных; затем мы используем этот метод для прохождения индекса и удаления их. Наконец, мы распечатали обновленные данные.
Пример 1. Удаление последней строки из файла CsV
Вот пример, в котором мы удалили последнюю строку с помощью метода drop. Сначала мы читаем файл CSV как фрейм данных с помощью read_csv(), затем используем метод drop() для удаления строки с индексом -1. Затем мы указали индекс для удаления, используя параметр index. Наконец, мы записываем обновленный DataFrame обратно в файл CSV, используя to_csv(), устанавливая index=False, чтобы избежать записи индексов строк в файл.
import pandas as pd df = pd.read_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv') df = df.drop(df.index[-1]) df.to_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv', index=False)
Выход
CSV-файл перед запуском кода

CSV-файл после запуска кода —

Пример 2. Удаление строки по метке
Вот пример, аналогичный приведенному выше; в этом примере мы удаляем строку с меткой «строка». В этом примере мы читаем CSV-файл с помощью read_csv(), но на этот раз мы устанавливаем столбец «id» в качестве индекса, используя параметр index_m. Затем мы используем метод drop() для удаления строки с индексной меткой «строка». Затем мы указали метку, которую нужно удалить, используя параметр index. Наконец, мы записываем обновленный DataFrame обратно в файл CSV с помощью to_csv(), не устанавливая index=False, поскольку метки строк теперь являются частью файла CSV.
import pandas as pd df = pd.read_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv', index_col='id') df = df.drop('row1') df.to_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv', index=True)
Выход
CSV-файл перед запуском кода —

CSV-файл после запуска кода —

Пример 3. Удаление строки с условием
В этом примере сначала мы читаем CSV-файл, затем используем метод drop(), чтобы удалить строку, в которой значение в столбце «Имя» равно «Джон». Мы делаем это, сначала используя логическое индексирование, чтобы выбрать строки, соответствующие условию. Наконец, мы записываем обновленный DataFrame обратно в файл CSV, используя to_csv(), снова устанавливая index=False.
import pandas as pd df = pd.read_csv('example_3.csv') df = df.drop(df[df.Name == 'Ankita'].index) df.to_csv('example_3.csv', index=False)
Выход
CSV-файл перед запуском кода —

CSV-файл после запуска кода —

Заключение
Мы узнали, что pandas — это мощная и гибкая библиотека Python для манипулирования и анализа данных. Он обеспечивает высокопроизводительные структуры данных. Мы проиллюстрировали метод удаления для удаления строки из файла csv. В зависимости от потребностей мы можем указать строки для удаления по индексу, метке или условию. Этот метод позволяет удалить одну или несколько строк из файла csv.
Все права защищены. © Linux-Console.net • 2019-2024
Форум русскоязычного сообщества Ubuntu
Страница сгенерирована за 0.037 секунд. Запросов: 25.
- Сайт
- Об Ubuntu
- Скачать Ubuntu
- Семейство Ubuntu
- Новости
- Форум
- Помощь
- Правила
- Документация
- Пользовательская документация
- Официальная документация
- Семейство Ubuntu
- Материалы для загрузки
- Совместимость с оборудованием
- RSS лента
- Сообщество
- Наши проекты
- Местные сообщества
- Перевод Ubuntu
- Тестирование
- RSS лента
© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.
Как удалить определённую строку из .txt файла
Я хочу найти в файле users.txt определённую строку (например, СОДЕРЖАЩУЮ «Привет» ), и удалить эту строку. Я облазил всё — ничего не нашел с моим случаем. И да — покажите легко, не нужно делать огромные непонятные коды. Задача проста — найти и удалить определённую строку из .txt файла
Отслеживать
16.9k 4 4 золотых знака 21 21 серебряный знак 31 31 бронзовый знак
задан 5 фев 2019 в 9:33
vaytonqueen vaytonqueen
91 1 1 золотой знак 1 1 серебряный знак 9 9 бронзовых знаков
Оффтоп: Даже если задача звучит просто, это не значит, что она проста в реализации.
5 фев 2019 в 9:37
А что может быть сложного в ПРОСТОМ УДАЛЕНИИ строки? Я понимаю, сам не умею т.к. начинающий. Но логично же — просто удалить строку.
5 фев 2019 в 9:39
И что по вашему код должен сделать после line.clear()? Допустим, он очистит место на диске, которое занимает эта строчка. Но файл по прежнему будет иметь ту же длину, только теперь с последовательностью нулевых байт в середине, там, где была строка! По любому нужно как минимум сместить все строки, которые идут после удалённой.
5 фев 2019 в 10:05
Нет такого понятия — удаление из файла (как устройства последовательного доступа). Либо считать всё в список, удалить ненужное, записать список в тот же файл, либо читать построчно, как вы уже умеете, записывая в выходной файл только хорошие строки, потом удалить старый файл, переименовать новый.
5 фев 2019 в 10:07
@Vayton, если вы в текстовом редакторе удалите одну строчку из текстового файла в котором 1.000.000 строк, то текстовый редактор пересоздаст файл и запишет в него 999.999 строк.
5 фев 2019 в 11:07
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Открываем файл для чтения.
Сохраняем все строки в массив lines
Открываем файл для записи.
Проходим по массиву строк и сравниваем с искомой строкой.
Если строка не найдена — записываем строку в файл.
UPD. С учетом предложений @MaxU
#!/usr/bin/env python3 import re with open('f.txt') as f: lines = f.readlines() str = 'Hello' pattern = re.compile(re.escape(str)) with open('f.txt', 'w') as f: for line in lines: result = pattern.search(line) if result is None: f.write(line)
Или почти тоже самое, но в один проход (но я за первый вариант)
#!/usr/bin/env python3 import re str = 'Hello' pattern = re.compile(re.escape(str)) with open('f.txt', 'r+') as f: lines = f.readlines() f.seek(0) for line in lines: result = pattern.search(line) if result is None: f.write(line) f.truncate()
Удаление строки из txt
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
3211Marlon1123
Участник
Автор темы
Версия MoonLoader .027.0-preview
Как это сделать? Допустим, мне нужно удалить последнюю строчку
Последнее редактирование: 2 Апр 2022
chapo
function removeLines(file, linesToRemove) if doesFileExist(file) then local lines = <> for line in io.lines(file) do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end local handle = io.open(file, 'w') handle:write(table.concat(result, '\n')) handle:close() end end
sampRegisterChatCommand('remove', function().
chapo
В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,723 11,110
function removeLines(file, linesToRemove) if doesFileExist(file) then local lines = <> for line in io.lines(file) do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end local handle = io.open(file, 'w') handle:write(table.concat(result, '\n')) handle:close() end end
sampRegisterChatCommand('remove', function() removeLines(getWorkingDirectory()..'\\FILEBEBRA.txt', ) -- 1, 5 - строки которые будут удалены end)
что бы удалить последнюю строку тебе нужно узнать ее номер, вот пример получения номера последней строки:
function getLastLineIndex(file) local lines = <> for line in io.lines(file) do table.insert(lines, line) end return #lines end -- удалить последнюю: removeLines(файл, )
3211Marlon1123
Участник
Автор темы
function removeLines(file, linesToRemove) if doesFileExist(file) then local lines = <> for line in io.lines(file) do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end local handle = io.open(file, 'w') handle:write(table.concat(result, '\n')) handle:close() end end
sampRegisterChatCommand('remove', function() removeLines(getWorkingDirectory()..'\\FILEBEBRA.txt', ) -- 1, 5 - строки которые будут удалены end)
Посмотреть вложение 142117
что бы удалить последнюю строку тебе нужно узнать ее номер, вот пример получения номера последней строки:
function getLastLineIndex(file) local lines = <> for line in io.lines(file) do table.insert(lines, line) end return #lines end -- удалить последнюю: removeLines(файл, )
Спасибо, что отозвался. Сейчас проверю и отвечу)
function removeLines(file, linesToRemove) if doesFileExist(file) then local lines = <> for line in io.lines(file) do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end local handle = io.open(file, 'w') handle:write(table.concat(result, '\n')) handle:close() end end
sampRegisterChatCommand('remove', function() removeLines(getWorkingDirectory()..'\\FILEBEBRA.txt', ) -- 1, 5 - строки которые будут удалены end)
Посмотреть вложение 142117
что бы удалить последнюю строку тебе нужно узнать ее номер, вот пример получения номера последней строки:
function getLastLineIndex(file) local lines = <> for line in io.lines(file) do table.insert(lines, line) end return #lines end -- удалить последнюю: removeLines(файл, )
Не робит( Проверку на файл убрал, ибо она уже есть
fileDirectory = 'путь к файлу и бла бла бла' f = io.open(fileDirectory, 'r+') function removeLines(linesToRemove) local lines = <> for line in f:lines() do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end f:write(table.concat(result, '\n')) f:flush() f:close() end function getLastLineIndex() local lines = <> for line in f:lines() do table.insert(lines, line) end return #lines end
Последнее редактирование: 3 Апр 2022
chapo
В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,723 11,110
Спасибо, что отозвался. Сейчас проверю и отвечу)
Не робит( Проверку на файл убрал, ибо она уже есть
fileDirectory = 'путь к файлу и бла бла бла' f = io.open(fileDirectory, 'r+') function removeLines(linesToRemove) local lines = <> for line in f:lines() do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end f:write(table.concat(result, '\n')) f:flush() f:close() end function getLastLineIndex() local lines = <> for line in f:lines() do table.insert(lines, line) end return #lines end