- 5 простых способов удалить символ из строки
- 1. Примитивный метод удаления символа из строки
- 2. Удаление элемента из строки с помощью метода replace()
- 3. Удаление символа с помощью срезов и конкатенации
- 4. Удаление символа с помощью метода join() и генераторов списков
- 5. Удаление символа из строки с помощью метода translate()
- Pandas: как удалить строки, содержащие определенное значение
- Пример 1. Удаление строк, содержащих определенное значение
- Пример 2. Удаление строк, содержащих значения в списке
- Пример 3. Удаление строк, содержащих определенные значения в нескольких столбцах
- Pandas: как удалить строки, содержащие определенную строку
- Пример 1. Удаление строк, содержащих определенную строку
- Пример 2. Удаление строк, содержащих строку в списке
- Пример 3. Удаление строк, содержащих неполную строку
- Как удалить строки в Pandas DataFrame на основе условия
- Метод 1: удаление строк на основе одного условия
- Метод 2: удаление строк на основе нескольких условий
- Дополнительные ресурсы
5 простых способов удалить символ из строки
Существует несколько методов, позволяющих удалить определенный символ из строки:
- Примитивный метод.
- Функция replace().
- Срезы и конкатенация.
- Метод join() и генератор списков.
- Метод translate()
Важная деталь — строки в Python неизменяемы. Исходная строка останется нетронутой, а новую вернут методы, о которых написано выше.
Задачи по строкам и решения к ним у нас в телеграм канале PythonTurbo
1. Примитивный метод удаления символа из строки
Суть этого метода проста. Мы пишем цикл и создаем новую пустую строку. Цикл работает так: все символы кроме элемента с индексом n помещаются в новую строку. ( n — индекс элемента, который нам нужно удалить)
input_str = "pythonist" # Выводим в консоль исходную строку print ("Исходная строка: " + input_str) result_str = "" for i in range(0, len(input_str)): if i != 3: result_str = result_str + input_str[i] # Выводим в консоль строку после удаления i-го элемента print ("Строка после удаления i-го элемента: " + result_str)
Исходная строка: pythonist Строка после удаления i-го элемента: pytonist
2. Удаление элемента из строки с помощью метода replace()
str = "pythonist" print ("Исходная строка: " + str) res_str = str.replace('t', '') # Удаление всех 't' print("Строка после удаления всех символов t: " + res_str) # Удаление только первой t res_str = str.replace('t', '', 1) print ("Строка после удаления первого t: " + res_str)
Исходная строка: pythonist Строка после удаления всех символов t: pyhonis Строка после удаления первого t: pyhonist
Мини-задачка для вашей тренировки метода replace()
«Напишите программу на Python для получения строки из заданной строки, в которой все вхождения первого символа заменены на ‘$’, кроме самого первого символа.»
Пример: print(change_char(‘restart’))
»»» resta$t
Решение задачки можно глянуть у нас в канале
3. Удаление символа с помощью срезов и конкатенации
str = "pythonist" print ("Исходная строка: " + str) # Удаляем элемент с индексом 3 # с помощью срезов и объединения res_str = str[:3] + str[4:] print ("Строка после удаления символа: " + res_str
Исходная строка: pythonist Строка после удаления символа: pytonist
4. Удаление символа с помощью метода join() и генераторов списков
Суть этого метода в том, чтобы конвертировать строку в эквивалентный список. После этого все элементы кроме того, который мы собираемся удалить, объединяются в строку.
str = "pythonist" print("Исходная строка: " + str) # Удаление элемента с индексом 2 # с помощью join() и генератора списков res_str = ''.join([str[i] for i in range(len(str)) if i != 2]) print("Строка после удаления символа: " + res_str)
Исходная строка: pythonist Строка после удаления символа: pyhonist
5. Удаление символа из строки с помощью метода translate()
str = 'pythonist123pythonist' print(str.translate())
Pandas: как удалить строки, содержащие определенное значение
Вы можете использовать следующий синтаксис для удаления строк в кадре данных pandas, которые содержат определенное значение в определенном столбце:
#drop rows that contain specific 'value' in 'column_name' df = df[df.column_name != value ]
Вы можете использовать следующий синтаксис для удаления строк в кадре данных pandas, которые содержат любое значение в определенном списке:
#define values values = [value1, value2, value3, . ] #drop rows that contain any value in the list df = df[df.column_name.isin (values) == False ]
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1. Удаление строк, содержащих определенное значение
В следующем коде показано, как удалить любые строки, содержащие определенное значение в одном столбце:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df team name rebounds points 0 Mavs Dirk 11 26 1 Lakers Kobe 7 31 2 Spurs Tim 14 22 3 Cavs Lebron 7 29 #drop any rows that have 7 in the rebounds column df = df[df.rebounds != 7 ] #view resulting DataFrame df team name rebounds points 0 Mavs Dirk 11 26 2 Spurs Tim 14 22
Пример 2. Удаление строк, содержащих значения в списке
В следующем коде показано, как удалить любые строки в DataFrame, содержащие любое значение в списке:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df team name rebounds points 0 Mavs Dirk 11 26 1 Lakers Kobe 7 31 2 Spurs Tim 14 22 3 Cavs Lebron 7 29 #define list of values values = [7, 11] #drop any rows that have 7 or 11 in the rebounds column df = df[df.rebounds.isin (values) == False ] #view resulting DataFrame df team name rebounds points 2 Spurs Tim 14 22
Пример 3. Удаление строк, содержащих определенные значения в нескольких столбцах
В следующем коде показано, как удалить любые строки в DataFrame, которые содержат определенное значение в одном из нескольких столбцов:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df team name rebounds points 0 Mavs Dirk 11 26 1 Lakers Kobe 7 31 2 Spurs Tim 14 22 3 Cavs Lebron 7 29 #drop any rows that have 11 in the rebounds column or 31 in the points column df = df[(df.rebounds != 11 ) & (df.points != 31 )] #view resulting DataFrame df team name rebounds points 2 Spurs Tim 14 22 3 Cavs Lebron 7 29
Pandas: как удалить строки, содержащие определенную строку
Вы можете использовать следующий синтаксис для удаления строк, содержащих определенную строку в кадре данных pandas:
df[df["col"].str.contains("this string")== False ]**
В этом руководстве объясняется несколько примеров использования этого синтаксиса на практике со следующим кадром данных:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df team conference points 0 A East 11 1 A East 8 2 A East 10 3 B West 6 4 B West 6 5 C East 5
Пример 1. Удаление строк, содержащих определенную строку
В следующем коде показано, как удалить все строки в DataFrame, содержащие «A» в столбце команды:
df[df["team"].str.contains("A")== False ] # team conference points #3 B West 6 #4 B West 6 #5 C East 5**
Пример 2. Удаление строк, содержащих строку в списке
В следующем коде показано, как удалить все строки в DataFrame, содержащие «A» или «B» в столбце команды:
df[df["team"].str.contains("A|B")== False] # team conference points #5 C East 5**
Пример 3. Удаление строк, содержащих неполную строку
В предыдущих примерах мы отбрасывали строки на основе строк, которые точно соответствовали одной или нескольким строкам.
Однако, если мы хотим удалить строки, содержащие неполную строку, мы можем использовать следующий синтаксис:
#identify partial string to look for discard = ["Wes"] #drop rows that contain the partial string "Wes" in the conference column df[~df.conference.str.contains('|'.join(discard))] #team conference points #0 A East 11 #1 A East 8 #2 A East 10 #5 C East 5**
Вы можете найти больше руководств по pandas на этой странице .
Как удалить строки в Pandas DataFrame на основе условия
Мы можем использовать следующий синтаксис для удаления строк в pandas DataFrame на основе условия:
Метод 1: удаление строк на основе одного условия
Метод 2: удаление строк на основе нескольких условий
df = df[(df.col1 > 8) & (df.col2 != 'A')]
Примечание.Мы также можем использовать функцию drop() для удаления строк из DataFrame, но эта функция оказалась намного медленнее, чем простое присвоение DataFrame отфильтрованной версии самого себя.
В следующих примерах показано, как использовать этот синтаксис на практике со следующими пандами DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df team pos assists rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 A F 9 6 4 B G 12 6 5 B G 9 5 6 B F 9 9 7 B F 4 12
Метод 1: удаление строк на основе одного условия
В следующем коде показано, как удалять строки в DataFrame на основе одного условия:
#drop rows where value in 'assists' column is less than or equal to 8 df = df[df.assists > 8] #view updated DataFrame df team pos assists rebounds 3 A F 9 6 4 B G 12 6 5 B G 9 5 6 B F 9 9
Любая строка, которая имела значение меньше или равное 8 в столбце «помощь», была удалена из DataFrame.
Метод 2: удаление строк на основе нескольких условий
В следующем коде показано, как удалять строки в DataFrame на основе нескольких условий:
#only keep rows where 'assists' is greater than 8 and rebounds is greater than 5 df = df[(df.assists > 8) & (df.rebounds > 5)] #view updated DataFrame df team pos assists rebounds 3 A F 9 6 4 B G 12 6 5 B G 9 5 6 B F 9 9
Единственные строки, которые мы сохранили в DataFrame, были те, в которых значение помощи было больше 8, а значение подбора больше 5.
Обратите внимание, что мы также можем использовать | оператор для применения фильтра «или»:
#only keep rows where 'assists' is greater than 8 or rebounds is greater than 10 df = df[(df.assists > 8) | (df.rebounds > 10)] #view updated DataFrame df team pos assists rebounds 0 A G 5 11 3 A F 9 6 4 B G 12 6 5 B G 9 5 6 B F 9 9 7 B F 4 12
Единственные строки, которые мы сохранили в DataFrame, были те, в которых значение помощи было больше 8 или значение подбора было больше 10.
Все строки, не соответствующие одному из этих условий, удалялись.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas: