Удаление символов из питона фрейма данных
Я хочу заменить строку в одном из столбцов таблицы. Пример: я хочу удалить b"SET и b"MULTISET из столбца df. как этого добиться. Мне нужен вывод, как показано ниже,
columns = ['cust_id', 'cust_name', 'vehicle', 'details', 'bill']
df = pd.DataFrame(data=t, columns=columns)
df
cust_id cust_name vehicle details bill
0 101 b"SET{'Tom','C'}" b"MULTISET{'Toyota','Cruiser'}" b"ROW('Street 1','12345678','NewYork, US')" 1200.00
1 102 b"SET{'Rachel','Green'}" b"MULTISET{'Ford','se'}" b"ROW('Street 2','12344444','Florida, US')" 2400.00
2 103 b"SET{'Chandler','Bing'}" b"MULTISET{'Dodge','mpv'}" b"ROW('Street 1','12345555','Georgia, US')" 601.10
Требуемый вывод:
cust_id cust_name vehicle details bill
0 101 {'Tom','C'} {'Toyota','Cruiser'} ('Street 1','12345678','NewYork, US') 1200.00
1 102 {'Rachel','Green'} {'Ford','se'} ('Street 2','12344444','Florida, US') 2400.00
2 103 {'Chandler','Bing'} {'Dodge','mpv'} ('Street 1','12345555','Georgia, US') 601.10
1 ответ
Решение
Вот возможное решение,
- Определим интересующий столбец,
columns = ['cust_name', 'vehicle', 'details']
- Используйте выражение регулярного выражения для извлечения значений между
{}
или()
regex_ = r"([\{|\(].*[\}|\)])"
- Собирая вместе,
str.decode('ascii')
заключается в преобразовании значений столбцов изbyte
кstring
.
columns = ['cust_name', 'vehicle', 'details']
regex_ = r"([\{|\(].*[\}|\)])"
for col in columns:
df[col] = df[col].str.decode('ascii').str.extract(regex_)
cust_id cust_name ... details bill
0 101 {'Tom','C'} ... ('Street 1','12345678','NewYork, US') 1200.0
1 102 {'Rachel','Green'} ... ('Street 2','12344444','Florida, US') 2400.0
2 103 {'Chandler','Bing'} ... ('Street 1','12345555','Georgia, US') 601.1