gpt4 book ai didi

python - 使用 Pandas 将分类变量转换为整数

转载 作者:行者123 更新时间:2023-11-28 21:50:39 25 4
gpt4 key购买 nike

我正在尝试将分类变量转换为整数。但是,我希望他们使用相同的键(A 在所有字段中都转换为 1。我下面的代码不使用相同的键。

import pandas as pd

df1 = pd.DataFrame({'A' : ['A', 'A', 'C', 'D','B']})

df2 = pd.DataFrame({'A' : ['D', 'D', 'B', 'A','A']})

df1_int = pd.factorize(df1['A'])[0]
print df1_int

df2_int = pd.factorize(df2['A'])[0]
print df2_int

这是我得到的输出:

    [0 0 1 2 3]
[0 0 1 2 2]

最佳答案

您可以将现有的列转换为分类数据类型,当您对两者使用相同的类别时,基础整数值(您可以通过 Series.cat 作为 codes 访问.codes) 将在两个数据帧之间保持一致:

In [5]: df1['A'].astype('category', categories=list('ABCD')).cat.codes
Out[5]:
0 0
1 0
2 2
3 3
4 1
dtype: int8

In [6]: df2['A'].astype('category', categories=list('ABCD')).cat.codes
Out[6]:
0 3
1 3
2 1
3 0
4 0
dtype: int8

如果您不想手动指定类别,您还可以为第二个数据框重复使用第一个数据框的类别,以确保它们相同:

df1['A'] = df1['A'].astype('category')
df2['A'] = df2['A'].astype('category', categories=df1['A'].cat.categories)

注意:astype('category', categories=...) 仅适用于 pandas >= 0.16,对于 pandas 0.15,您可以先将其转换为类别数据类型,然后再设置类别使用 set_categories(参见 docs)。

关于python - 使用 Pandas 将分类变量转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31720527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com