【发布时间】:2020-04-11 22:24:24
【问题描述】:
我有一个数据集,其中“国家”列有 28 个不同的国家。我需要首先对列进行“标签编码”,然后仅使用 6 个标签对其进行“一个热编码”:前 5 个最常见的国家:美国、中国、日本、法国、加拿大和第 6 个标签是“其他”的任何其他国家专栏
【问题讨论】:
标签: python pandas data-science
我有一个数据集,其中“国家”列有 28 个不同的国家。我需要首先对列进行“标签编码”,然后仅使用 6 个标签对其进行“一个热编码”:前 5 个最常见的国家:美国、中国、日本、法国、加拿大和第 6 个标签是“其他”的任何其他国家专栏
【问题讨论】:
标签: python pandas data-science
你可以使用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'])
【讨论】:
您可以使用lambda 尝试这个简单的解决方案。 lambda 中的 if elif else 条件甚至可以帮助您进一步分类!
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'])
【讨论】: