我有一列的分类值为[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/

10-11 07:58