У меня есть следующий фрейм данных:
Я хочу создать следующий фрейм данных:
Таким образом, назначение столбца «Классификация» зависит от первой цифры столбца «#ID». Мой исходный фрейм данных содержит тысячи записей, поэтому создание словаря на самом деле не вариант. Есть ли более простой способ сделать это?
На самом деле вы можете использовать словарь только для сопоставления возможных первых цифр, а затем вы можете использовать apply
следующим образом:
classification = {
'1': 'Freshman',
'2': 'Sophomore',
'3': 'Junior',
'4': 'Senior'
}
df['Classification'] = df['#ID'].apply(lambda id: classification[str(id)[0]])
Что приводит к вашему желаемому кадру данных:
#ID Score Classification
0 1029 78 Freshman
1 1229 89 Freshman
2 1929 77 Freshman
3 2124 100 Sophomore
4 3120 89 Junior
5 4145 84 Senior
Вы можете создать список этих конкретных идентификаторов (например, с именем ids
), а затем запустить df.loc[df['#ID'].isin(ids), 'Classification'] = 'Other'
Если мой ответ помог вам, не забудьте «Принять», чтобы этот вопрос был помечен как решенный.
Я сделал это сейчас. Спасибо. Спасибо за вашу помощь.
Спасибо за ответ. Это полезно. Как изменился бы код, если бы только несколько идентификаторов нужно было присвоить классификации «Другое»? Например, идентификаторы 4225 и 4349 должны быть назначены «Другому», даже если первая цифра 4?