Редактирование определенных строк: DataFrame.loc
против Series.where
Стандартная опция для редактирования определенных строк ("срез") объекта DataFrame
- .loc
.
В принятом ответе используется аккуратное приложение pandas.Series.where
для перезаписи серии df.Country
, что более кратко для этой конкретной задачи.
Значения записи: .apply
против .map
Вы можете использовать .map()
, чтобы перекодировать серию напрямую со словарем - не нужно .apply()
лямбда-функция.
Пример
# Example data
df = pd.DataFrame({'Country': ['unknown', 'USA', 'unknown', 'UK', 'USA', 'unknown'],
'City': ['London', 'New York', 'New York', 'London', 'New York', 'Paris']
})
city2country_mapping = {'London': 'UK', 'New York': 'USA', 'Paris': 'France'}
# print(df)
# Country City
# 0 unknown London
# 1 USA New York
# 2 unknown New York
# 3 UK London
# 4 USA New York
# 5 unknown Paris
df.loc[df.Country == 'unknown', 'Country'] = df[df.Country == 'unknown'].City.map(city2country_mapping)
print(df)
Выход:
Country City
0 UK London
1 USA New York
2 USA New York
3 UK London
4 USA New York
5 France Paris