作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 pd,其中包含两个包含 150 个类别的分类列。可能A
列中的值未出现在B
列中。例如
a = pd.DataFrame({'A':list('bbaba'), 'B':list('cccaa')})
a['A'] = a['A'].astype('category')
a['B'] = a['B'].astype('category')
输出为
Out[217]:
A B
0 b c
1 b c
2 a c
3 b a
4 a a
还有
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
被视为1
。但是,我想要这样的东西:
Out[220]:
A B
0 1 2
1 1 2
2 0 2
3 1 0
4 0 0
其中 2
被视为 c
。
请注意,我有 150 个不同的标签。
最佳答案
使用pd.Categorical()
您可以指定类别列表:
In [44]: cats = a[['A','B']].stack().sort_values().unique()
In [45]: cats
Out[45]: array(['a', 'b', 'c'], dtype=object)
In [46]: a['A'] = pd.Categorical(a['A'], categories=cats)
In [47]: a['B'] = pd.Categorical(a['B'], categories=cats)
In [48]: a[cat_columns] = a[cat_columns].apply(lambda x: x.cat.codes)
In [49]: a
Out[49]:
A B
0 1 2
1 1 2
2 0 2
3 1 0
4 0 0
关于python - 如何在 Pandas 的一个数据框中对两个类别进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49215136/
我是一名优秀的程序员,十分优秀!