【问题标题】:Replace unique values of pandas data-frame替换熊猫数据框的唯一值
【发布时间】:2016-10-27 18:40:47
【问题描述】:

您好,我是 python 和 pandas 的新手。

我已经使用 pandas 提取了其中一列的唯一值。 现在在获取列的唯一值之后,它们是字符串。

['Others, Senior Management-Finance, Senior Management-Sales'
  'Consulting, Strategic planning, Senior Management-Finance'
  'Client Servicing, Quality Control - Product/ Process, Strategic       
   planning'
  'Administration/ Facilities, Business Analytics, Client Servicing'
  'Sales & Marketing, Sales/ Business Development/ Account Management,    
  Sales Support']

我想用唯一的整数值替换字符串值。

为简单起见,我可以为您提供虚拟输入和输出。

输入:

Col1
  A
  A
  B
  B
  B
  C
  C

唯一的df值如下

[ 'A' 'B' 'C' ]

替换后的列应该是这样的

Col1
  1
  1
  2
  2
  2
  3
  3

请建议我如何使用循环或任何其他方式来做到这一点,因为我有多个 300 唯一值。

【问题讨论】:

    标签: python pandas replace dataframe categories


    【解决方案1】:

    使用factorize:

    df['Col1'] = pd.factorize(df.Col1)[0] + 1
    print (df)
       Col1
    0     1
    1     1
    2     2
    3     2
    4     2
    5     3
    6     3
    

    Factorizing values.

    另一个numpy.unique 解决方案,但在巨大的dataframe 中速度较慢:

    _,idx = np.unique(df['Col1'],return_inverse=True) 
    df['Col1'] = idx + 1
    print (df)
       Col1
    0     1
    1     1
    2     2
    3     2
    4     2
    5     3
    6     3
    

    最后你可以将值转换为categorical - 主要是因为更少memory usage

    df['Col1'] = pd.factorize(df.Col1)[0]
    df['Col1'] = df['Col1'].astype("category")
    print (df)
      Col1
    0    0
    1    0
    2    1
    3    1
    4    1
    5    2
    6    2
    
    print (df.dtypes)
    Col1    category
    dtype: object
    

    【讨论】:

    猜你喜欢
    • 2018-08-16
    • 1970-01-01
    • 2019-02-02
    • 2018-09-29
    • 2022-06-24
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多