#python #pandas
#python #панды
Вопрос:
Я хотел бы:
- удалите слова «ANOS» и «ANO»;
- заменить «A» на «TO»; и
- замените «<1ano» на «от 0 до 1».
Пример: от «10 до 19 ANOS» до «от 10 до 19»
data = pd.DataFrame({'FAIXA_ETARIA': ['10 A 19 ANOS',' 20 A 29 ANOS', '30 A 39 ANOS', '40 A 49 ANOS',
'50 A 59 ANOS', ' 60 A 69 ANOS', '70 A 79 ANOS', '80 A 89 ANOS',
'<1ANO'],
'Count': [3, 8, 28, 7, 15, 9, 3, 5, 3]})
PS: В моей базе данных представлено много столбцов, я бы хотел, чтобы эта процедура выполнялась только в столбце «FAIXA_ETARIA»
Спасибо за вашу помощь!
Комментарии:
1. Имеет ли смысл мой ответ? Я использую регулярные выражения для гибкости. Если хотите, проверьте,
https://regex101.com/
чтобы попрактиковаться. Я думаю, что есть доступная реализация Python (в левой части окна в разделе «ВКУС»).2. @MarkMoretto ваш код работает! Спасибо за помощь и ссылку, мне нужно это исправить
Ответ №1:
вот один из возможных способов:
data["FAIXA_ETARIA"]
.str.replace(r"ANOw?", "") # Regex for ANO plus an optional single character
.str.replace(r"A", "TO") # Replace a single character
.str.replace(r"<w?", "0 to 1") # Regex for < and non-greedy multiple characters.
Вывод:
0 10 TO 19
1 20 TO 29
2 30 TO 39
3 40 TO 49
4 50 TO 59
5 60 TO 69
6 70 TO 79
7 80 TO 89
8 0 to 1
Name: FAIXA_ETARIA, dtype: object
Ответ №2:
Вы могли бы перебрать все элементы в вашем массиве, а затем использовать replace()
метод python. Пример:
message = "Hello there"
custom = message.replace("there", "kvratto")
Результатом будет «Привет, кватто».
В вашем случае у вас есть словарь. Таким образом, вы можете получить конкретные записи с dictionaryname['columnname']
помощью . Вы можете поместить результат в новую переменную, а затем обрабатывать его как массив.
Я надеюсь, что этого достаточно!
Комментарии:
1. Спасибо за вашу помощь, @MarkMoretto и @LinusDehner!
Ответ №3:
Или просто извлеките цифру и соедините с помощью «to».:
data['FAIXA_ETARIA'] = data['FAIXA_ETARIA'].str.findall('d ').str.join(' to ')
cond = data['FAIXA_ETARIA'] == '1'
data.loc[cond, 'FAIXA_ETARIA'] = '0 to 1'
0 10 to 19
1 20 to 29
2 30 to 39
3 40 to 49
4 50 to 59
5 60 to 69
6 70 to 79
7 80 to 89
8 0 to 1
Name: FAIXA_ETARIA, dtype: object