列表所以我STR名單是:轉換列表轉換的INT
col = ['cat1','cat2','cat3']
我想轉換成列表INT像:
col = [0,1,2]
我想:
col=pd.Series(col)
col=pd.to_numeric(col)
但它給出了錯誤:
無法解析str ing 「的CAT1」 在位置0
列表所以我STR名單是:轉換列表轉換的INT
col = ['cat1','cat2','cat3']
我想轉換成列表INT像:
col = [0,1,2]
我想:
col=pd.Series(col)
col=pd.to_numeric(col)
但它給出了錯誤:
無法解析str ing 「的CAT1」 在位置0
In [4719]: pd.Series(col).astype('category').cat.codes
Out[4719]:
0 0
1 1
2 2
dtype: int8
或者,
In [4726]: pd.Series(pd.factorize(col)[0])
Out[4726]:
0 0
1 1
2 2
dtype: int64
或者,
In [4738]: np.unique(col, return_inverse=True)[1]
Out[4738]: array([0, 1, 2], dtype=int64)
或者,
In [4739]: pd.Categorical(col).codes
Out[4739]: array([0, 1, 2], dtype=int8)
使用.tolist()
最後,如果你需要列表。
使用factorize
:
print (pd.factorize(col)[0].tolist())
[0, 1, 2]
如果沒有重複的值:
a = list(range(len(col)))
[0, 1, 2]
而且它的工作很好,如果改變col
到:
col = ['cat4','cat2','cat3', 'cat2']
print (pd.factorize(col)[0].tolist())
[0, 1, 2, 1]
還可以獲得用第二溶液不同的輸出:
col = ['cat4','cat2','cat3', 'cat2']
a = list(range(len(col)))
print (a)
[0, 1, 2, 3]
您還可以使用groupby+ngroup
即
col = ['cat1','cat2','cat3', 'cat2']
col=pd.Series(col)
col.groupby(col).ngroup()
0 0 1 1 2 2 3 1 dtype: int64
如果您需要名單,然後
col.groupby(col).ngroup().tolist()
[0, 1, 2, 1]
使用'山坳= [我爲I,J在枚舉(COL)]' – Dark
這是什麼樣的轉換?只是位置? –
如果col = ['cat4','cat2','cat3','cat2']'是什麼意思輸出? – jezrael