Для решения задачи создадим функцию `process_race`, которая будет принимать строку с данными о расе/этничности.
Шаги решения:
1. Подключим библиотеку pandas.
2. Определим функцию `process_race`, которая будет принимать строку `race` и возвращать “gr1” или “gr2” в зависимости от условия.
3. Удалим пробелы из строки `race` с помощью метода `strip()` для удаления пробелов вначале и конце строки.
4. Переведем строку в нижний регистр с помощью метода `lower()`.
5. Импортируем модуль регулярных выражений `re`.
6. Определим регулярное выражение `[d-z]`, которое будет находить любую букву от “d” до “z” в строке.
7. С помощью функции `re.search()` проверим, есть ли в строке хотя бы одна такая буква.
8. Вернем “gr1”, если регулярное выражение нашло совпадение, иначе вернем “gr2”.
9. Загрузим данные из источника, где находится столбец `race/athnicity`, в объект DataFrame с помощью функции `pandas.read_csv()`.
10. Создадим новый столбец `new_race/athnicity` с помощью метода `apply()` и передадим в него лямбда-функцию, в которую передадим значение столбца `race/athnicity` и применим к нему функцию `process_race`.
11. Сохраним результат в новый файл или обновим исходный DataFrame.
Пример реализации:
“`python
import pandas as pd
import re
def process_race(race):
race = race.strip().lower()
if re.search(‘[d-z]’, race):
return “gr1”
else:
return “gr2”
# Загрузка данных из файла
df = pd.read_csv(‘data.csv’)
# Создание нового столбца
df[‘new_race/athnicity’] = df[‘race/athnicity’].apply(lambda x: process_race(x))
# Сохранение результатов в новый файл
df.to_csv(‘data_with_new_column.csv’, index=False)
“`
Таким образом, функция `process_race` будет применяться к каждому значению столбца `race/athnicity`, удалять пробелы, приводить к нижнему регистру и проверять наличие букв от “d” до “z”. В результате будет создан новый столбец `new_race/athnicity`, содержащий значения “gr1” или “gr2”.