Карта определяется, если значения нет в словаре — Python

#python #pandas #dataframe #dictionary

#python #pandas #фрейм данных #словарь

Вопрос:

Я занят с Titanic kaggle и хочу упростить и питонизировать этот фрагмент кода:

 allData = [trainData, testData]

commonTitles = {'Mlle' : 'Miss', 'Ms' : 'Miss', 'Mme' : 'Mrs', all others : 'Rare'}

for dataset in allData:
dataset['Title'].map(commonTitles)
  

Как мне указать все остальные части?
Кроме того, будет ли команда map пропускать здесь ‘Miss’ и ‘Mrs’ или она изменит их на ‘Rare’?

Спасибо

Комментарии:

1. вы пытались запустить это? это даже недопустимый python

2. сначала прочитайте это docs.python.org/3.7/tutorial/datastructures.html#dictionaries и поймите это, затем попробуйте провести рефакторинг чьего-либо кода.

3. Вы должны указать, пытаетесь ли вы выполнить перенос с другого языка или другого псевдокода — некоторые люди критикуют или голосуют против, потому что это нелегальный Python.

4. Но код, отредактированный aka () вместо {}, является кодом Python. Это была простая опечатка…

Ответ №1:

Сначала измените словарь, удалив Rare и добавив 2 элемента с одинаковым ключом и значением, чтобы избежать их замены на Rare , добавьте Series.fillna для замены значения, не совпадающие, и, поскольку список циклов фрейма данных создает другой:

 commonTitles = {'Mlle' : 'Miss', 
                'Ms' : 'Miss', 
                'Miss':'Miss',
                'Mme' : 'Mrs',
                'Mrs': 'Mrs'}

dfs = []
for dataset in allData:
    dataset['Title' ] = dataset['Title' ].map(commonTitles).fillna('Rare')
    dfs.append(dataset)