我有一个pd包括两个分类列150个类别。可能是第^{B
列中没有出现该值。例如
a = pd.DataFrame({'A':list('bbaba'), 'B':list('cccaa')})
a['A'] = a['A'].astype('category')
a['B'] = a['B'].astype('category')
输出是
^{pr2}$还有
cat_columns = a.select_dtypes(['category']).columns
a[cat_columns] = a[cat_columns].apply(lambda x: x.cat.codes)
a
输出是
Out[220]:
A B
0 1 1
1 1 1
2 0 1
3 1 0
4 0 0
我的问题是在A
列中,b
被认为是1
,但是在B
列中,c
被认为是{
Out[220]:
A B
0 1 2
1 1 2
2 0 2
3 1 0
4 0 0
{{cd7}被认为是 请注意,我有150个不同的标签。在
使用^{} 可以指定类别列表:
如果您对转换为分类代码并能够通过字典访问映射感兴趣,^{} 可能更方便。在
跨列via @AlexRiley获取唯一值的算法。在
结果:
^{pr2}$我们可以同时使用
pd.factorize
。在或者,如果要按排序的类别值进行因式分解,请使用
^{pr2}$sort=True
参数或等同于
np.unique
相关问题 更多 >
编程相关推荐