首页 > 解决方案 > 如何映射值并将许多值分配给“其他”类别?

问题描述

我有以下 DataFrame df

col1  col2
3     A
3     B
5     A
1     C
6     B

如何将 3 替换为 0 并将 5 替换为 1,而其余数字应替换为 2?

预期结果:

col3  col2
0     A
0     B
1     A
2     C
2     B

这是我到目前为止写的:

vals = {3:0, 5:1}
df["col3"] = df["col1"].map(vals)

标签: pythonpandas

解决方案


因为map返回不匹配值的缺失值,所以添加Series.fillna

vals = {3:0, 5:1}
df["col3"] = df["col1"].map(vals).fillna(2).astype(int)
print (df)
   col1 col2  col3
0     3    A     0
1     3    B     0
2     5    A     1
3     1    C     2
4     6    B     2

推荐阅读