Добавление столбца (2)
Использование iterrows() для перебора всех наблюдений в DataFrame библиотеки Pandas легко понять, но этот способ не очень эффективен. На каждой итерации создаётся новый объект Pandas Series.
Если вы хотите добавить столбец в DataFrame, применив функцию к другому столбцу, метод iterrows() в сочетании с циклом for — не лучший выбор. Вместо этого стоит использовать apply().
Сравните версию с iterrows() и версию с apply(), которые дают одинаковый результат для DataFrame brics:
for lab, row in brics.iterrows() :
brics.loc[lab, "name_length"] = len(row["country"])
brics["name_length"] = brics["country"].apply(len)
Аналогичным образом можно вызвать метод upper() для каждого значения в столбце country. Однако upper() является методом, поэтому потребуется немного другой подход:
Это упражнение является частью курса
Средний уровень Python
Инструкции к упражнению
- Замените цикл
forоднострочным выражением с.apply(str.upper). Результат должен быть тем же: вcarsдобавляется столбецCOUNTRY, содержащий названия стран в верхнем регистре. - Как обычно, выведите
carsна экран, чтобы увидеть результат своей работы.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)
# Use .apply(str.upper)
for lab, row in cars.iterrows() :
cars.loc[lab, "COUNTRY"] = row["country"].upper()