我有一列的分类值为[0 1 2 3 4 5]。我想通过以下方式仅用[1 2 3 4]替换这些值:
1 -> 1
2 -> 2
3 -> 3
0,4,5 -> 3
excel分类图
我尝试了这段代码:
bins = [0, 1, 2, 3, 4, np.inf]
names = ['4','1','2','3','4']
data['NEW_EDU'] = pd.cut(data['EDU'], bins, labels=names)
但是我得到了
ValueError:分类类别必须是唯一的
最佳答案
您只需要使用isin()
df.loc[df['EDU'].isin([0,4,5])] = 3
例:
df = pd.DataFrame({
'EDU': [1,2,3,4,5,0,4,2]
})
输出:
EDU
0 1
1 2
2 3
3 4
4 5
5 0
6 4
7 2
使用
df.loc[df['EDU'].isin([0,4,5])] = 3
输出:
EDU
0 1
1 2
2 3
3 3
4 3
5 3
6 3
7 2
关于python - 如何用另一个分类变量列表替换不同的分类变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57929076/