pandas Dataframe将类别转换为数字

vngu2lb8  于 2023-03-28  发布在  其他
关注(0)|答案(2)|浏览(188)

我有一个数据框,里面有很多变量。这些变量是类别,我想把它们转换成数字值。
例如,我在 Dataframe 的变量中有以下值:

ID | VarEx
0 | key
1 | door
2 | key
3 | key
4 | chair
5 | chair
6 | tv
7 | door
8 | tv

我想用一个循环来替换numbers中的值,因为在其他变量中我有大约1000个不同的值,这是我所期望的出口:

ID | VarEx
0 | 0
1 | 1
2 | 0
3 | 0
4 | 2
5 | 2
6 | 3
7 | 1
8 | 3

我怎么能用一个循环来实现呢?

zte4gxcn

zte4gxcn1#

另一种可能的解决方案:

df['VarEx'] = pd.Categorical(df['VarEx']).codes

输出:

ID  VarEx
0   0      2
1   1      1
2   2      2
3   3      2
4   4      0
5   5      0
6   6      3
7   7      1
8   8      3
ffx8fchx

ffx8fchx2#

下面是使用pd.factorize()的方法

cols = df.select_dtypes(include=["object"]).columns
for col in cols:
    df[col] = pd.factorize(df[col])[0]
    
print(df)
ID  VarEx
0   0      0
1   1      1
2   2      0
3   3      0
4   4      2
5   5      2
6   6      3
7   7      1
8   8      3

相关问题