【问题标题】:convert dataframe columns value into digital number将数据框列值转换为数字
【发布时间】:2018-02-04 16:12:53
【问题描述】:

我的数据框列中有以下数据。如何将每个域名转换为数字号码?我尝试在 for 循环中使用替换。但是,由于我有1200多个unqie域名。我不想这样做似乎不是一个好主意

for i, v in np.ndenumerate(np.unique(df['domain'])):
    df['domain'] = df['domain'].replace(to_replace=[v], value=i[0]+1, inplace=True)

但它不起作用

data frame:
    type  domain
0    1     yahoo.com
1    1     google.com
2    0     google.com
3    0     aa.com
4    0     google.com
5    0     aa.com
6    1     abc.com
7    1     msn.com
8    1     abc.com
9    1     abc.com
....

我想转换成

    type  domain
0    1     1
1    1     2
2    0     2
3    0     3
4    0     2
5    0     3
6    1     4
7    1     5
8    1     4
9    1     4
....

【问题讨论】:

    标签: python-3.x pandas numpy dataframe


    【解决方案1】:

    让我们使用pd.factorize:

    df.assign(domain=pd.factorize(df.domain)[0]+1)
    

    输出:

       type  domain
    0     1       1
    1     1       2
    2     0       2
    3     0       3
    4     0       2
    5     0       3
    6     1       4
    7     1       5
    8     1       4
    9     1       4
    

    【讨论】:

    • 不错 :-) ~ !+1
    【解决方案2】:

    如果数字编号分配确实很重要,你可以试试这个

    import pandas as pd 
    
    df.domain.astype('category').cat.codes
    
    Out[154]: 
    0    4
    1    2
    2    2
    3    0
    4    2
    5    0
    6    1
    7    3
    8    1
    9    1
    dtype: int8
    

    如果有问题,你可以试试

    maplist=df[['domain']].drop_duplicates(keep='first').reset_index(drop=True).reset_index().set_index('domain')
    maplist['index']=maplist['index']+1
    df.domain=df.domain.map(maplist['index'])
       Out[177]: 
       type  domain
    0     1       1
    1     1       2
    2     0       2
    3     0       3
    4     0       2
    5     0       3
    6     1       4
    7     1       5
    8     1       4
    9     1       4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多