Одно горячее кодирование столбца с 28 различными странами только с 6 классами - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть набор данных, в котором столбец «Страна» содержит 28 разных стран. Мне нужно сначала «закодировать метку» столбца, а затем «горячо закодировать» его только с 6 метками: 5 самых популярных стран: США, КИТАЙ, ЯПОНИЯ, ФРАНЦИЯ, КАНАДА и 6-я метка - «ДРУГОЕ» для любых других стран в столбец

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Вы можете попробовать это простое решение, используя lambda. Условия if elif else в lambda могут даже помочь вам классифицировать его дальше!

top = ['USA', 'CHINA', 'JAPAN', 'FRANCE', 'CANADA']
df['country'] = df['country'].apply(lambda x : 'OTHERS' if x not in top else x)
pd.get_dummies(df['country'])
0 голосов
/ 12 апреля 2020

Вы можете использовать np.where:

countries = ['USA', 'CHINA', 'JAPAN', 'FRANCE', 'CANADA']
df['country_cat'] = np.where(df['country'].isin(countries), 
                             df['country'], 'OTHER')

# and then you can use `pd.get_dummies`
pd.get_dummies(df['country_cat'])
...