【问题标题】:Pandas: How to convert column of string objects representing categories to integers?Pandas:如何将表示类别的字符串对象列转换为整数?
【发布时间】:2015-09-15 20:38:17
【问题描述】:

例如,如果我有一个 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

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

【问题讨论】:

    标签: python pandas dataframe types categorical-data


    【解决方案1】:

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

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

    这会将示例 DataFrame 的“day”列设置为以下内容:

    >>> 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
    

    “天”列是整数类型:

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

    【讨论】:

    • 看起来不错。我可以一次对多个列执行此操作吗?
    • 我认为您可能必须将操作单独应用于每一列,因为factorize 仅将一维数组作为输入。
    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多