Pandas:如何将表示类别的字符串对象列转换为整数?

时间:2015-09-15 20:38:18

标签: python pandas dataframe types categorical-data

例如,如果我有一个DataFrame df

    day     hour    price   booked
0   monday  7      12.0     True
1   monday  8      12.0     False
2   tuesday 7      13.0     True
3   sunday  8      13.0     False
4   monday  7      15.0     True
5   monday  8      13.0     False
6   tuesday 7      13.0     True
7   tuesday 8      15.0     False

例如,df['day'].dtypedtype('O')

我想将其转换为:

    day     hour    price   booked
0   1       7      12.0     1
1   1       8      12.0     0
2   2       7      13.0     1
3   3       8      13.0     0
4   1       7      15.0     1
5   1       8      13.0     0
6   2       7      13.0     1
7   2       8      15.0     0

映射到整数可以是任意的。

1 个答案:

答案 0 :(得分:3)

您可以使用factorize将列中的不同值编码为整数:

df['day'] = pd.factorize(df.day)[0]

这将设定“一天”。以下示例DataFrame的列:

>>> df
   day  hour  price booked
0    0     7     12   True
1    0     8     12  False
2    1     7     13   True
3    2     8     13  False
4    0     7     15   True
5    0     8     13  False
6    1     7     13   True
7    1     8     15  False

这一天' column是整数类型:

>>> df.dtypes
day         int64
hour        int64
price     float64
booked       bool