Замените значения в кадре данных Pandas регулярными выражениями

| | | | | | | | | | | | | | | | | | | | |

В предыдущей статье мы уже обсуждали, , как заменить некоторые известные строковые значения во фрейме данных . В этом посте мы будем использовать регулярные выражения для замены строк, имеющих определенный шаблон.

Проблема № 1: Вам предоставляется фрейм данных, содержащий подробную информацию о различных событиях в разных города. Для тех городов, которые начинаются с ключевого слова «Новый» или «Новый», измените его на «Новый».

Решение: мы собираемся использовать регулярное выражение для обнаружения таких имена, а затем мы будем использовать Dataframe.replace () для замены этих имен.


# import pandas как pd

import панды как pd


# Давайте создадим Dataframe

df = pd.DataFrame({ `Город` : [ `Нью-Йорк` , ` Parague` , "Нью-Дели" , "Венеция" < класс кода ="plain ">, <класс кода =" строка ">"Новый Орлеан" ],

` Событие` : [ `Музыка` , `Поэзия` , ` Театр` , `Комедия` , ` Tech_Summit` ],

`Стоимость` : [ 10000 , 5000 , 15000 , 2000 , 12000 ]})


# Создадим индекс

index_ = [pd.Period ( `02-2018` ), pd.Period( ` 04-2018` ),

pd.Period ( `06-2018` ), pd.Period ( ` 10-2018` ), pd.Period ( `12-2018` )]


# Установить индекс

df.index = index_


# Печать фрейма данных

print (df)

Вывод:

Теперь мы напишем регулярное выражение для соответствия строке, а затем воспользуемся Dataframe.replace() чтобы заменить эти имена.


# заменить соответствующие строки

df_updated = df.replace (to_replace = `[nN] ew` , value = `New_` , регулярное выражение = True )


# Распечатать обновленный фрейм данных

print (df_updated)

Вывод:

Как видно из вывода, старые строки были успешно заменены новыми.

Проблема № 2: Вам предоставляется датафрейм, который содержит подробную информацию о различных событиях в разных городах. Некоторые названия городов содержат некоторые дополнительные сведения в скобках. Ищите такие названия и удаляйте дополнительные детали.

Решение. Для этой задачи мы напишем собственную пользовательскую функцию, используя регулярные выражения, для определения и обновления названий этих городов. Кроме того, мы будем использовать Dataframe.apply() , чтобы применить нашу пользовательскую функцию к каждому значению столбца.


# import pandas as pd

import pandas as pd


# Давайте создадим Dataframe

df = pd.DataFrame ({ `Город` : [ `Нью-Йорк (Город)` , ` Параг` , `Нью-Дели (Дели)` , `Венеция` , ` Новый Орлеан` ],

` Событие` : [ ` Музыка` , `Поэзия` , `Театр` , `Комедия` , ` Tech_Summit` ],

`Стоимость` : [ 10000 , 5000 , 15000 , 2000 , 12000 ]})



# Давайте не будем создавать индекс

index_ = [pd .Period ( `02-2018` ), pd.Period ( `04-2018` ),

pd.Period( `06-2018` ), pd.Period ( ` 10-2018` ), pd.Period ( `12-2018` )]


# Установить индекс

df.index = index_


# Печать фрейма данных

print (df)

Вывод:

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


# Пакетный импорт с использованием регулярных выражений

import re


# Функция очистки имен

def Clean_names (City_name):

# Поиск открывающих скобок в заголовке с последующим

# любые символы повторяются любое количество раз

если re.search ( ` (. * ` , City_name):


# Получить позицию начала шаблона

pos = re.search ( `(. * ` , City_name) .start ()

# вернуть очищенное имя

return City_name [: pos]


else :

# если требуется очистка, вернуть то же имя

return City_name


# Обновлены столбцы городов

df [ `Город` ] = df [ `Город` ]. применить (Clean_names)


# Печать обновленного фрейма данных

print (df)

Вывод: