【问题标题】:Convert pandas series from string to unique int ids [duplicate]将熊猫系列从字符串转换为唯一的 int id [重复]
【发布时间】:2014-11-15 18:58:26
【问题描述】:

我有一个系列中的分类变量。我想为每个唯一值分配整数 id 并使用 id 创建一个新系列,有效地将字符串变量转换为整数变量。最紧凑/最有效的方法是什么?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以使用pandas.factorize:

    In [32]: s = pd.Series(['a','b','c'])
    
    In [33]: labels, levels = pd.factorize(s)
    
    In [35]: labels
    Out[35]: array([0, 1, 2])
    

    【讨论】:

    【解决方案2】:

    在 pandas 0.15+ 中使用新的 pandas categorical 类型的示例

    http://pandas.pydata.org/pandas-docs/version/0.16.2/categorical.html

    In [553]: x = pd.Series(['a', 'a', 'a', 'b', 'b', 'c']).astype('category')
    
    In [554]: x
    Out[554]: 
    0    a
    1    a
    2    a
    3    b
    4    b
    5    c
    dtype: category
    Categories (3, object): [
                            a
                            , b
                            , c]
    
    In [555]: x.cat.codes
    Out[555]: 
    0    0
    1    0
    2    0
    3    1
    4    1
    5    2
    dtype: int8
    

    【讨论】:

      猜你喜欢
      • 2018-11-01
      • 2018-10-21
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 2021-08-07
      • 2016-03-13
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多