将dataframe列值转换为数字数字

jac*_*118 1 numpy dataframe python-3.x pandas

我的数据框列中有以下数据.如何通过数字转换每个域名?我尝试在for循环中使用replace.但是,由于我有超过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)
Run Code Online (Sandbox Code Playgroud)

但它不起作用

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
....
Run Code Online (Sandbox Code Playgroud)

我想转换为

    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
....
Run Code Online (Sandbox Code Playgroud)

Sco*_*ton 5

我们来使用pd.factorize:

df.assign(domain=pd.factorize(df.domain)[0]+1)
Run Code Online (Sandbox Code Playgroud)

输出:

   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
Run Code Online (Sandbox Code Playgroud)

  • 不错的一个:-)〜!+1 (2认同)