2016-02-12 47 views
1

我有一個數據集包括user IDitem ID(包括字符串)和評價這樣的:如何用熊貓快速地將數據框中的字符串更改爲整數ID?

A12VH45Q3H5R5I B000NWJTKW 5.0 
A3J8AQWNNI3WSN B000NWJTKW 4.0 
A1XOBWIL4MILVM B000NWJTKW 1.0 

我想改變ID s到整數,如:

1    1   5.0 
2    1   4.0 
3    1   1.0 

我有嘗試了一種傳統的方式,創建一個大字典並用一個整數標記每個字符串ID。但花了很長時間。那麼你能否告訴我如何以更快的速度完成它?提前致謝。

回答

1

可以applyfactorize

In [244]: 
df[[0,1]] = df[[0,1]].apply(lambda x: pd.factorize(x)[0] + 1) 
df 

Out[244]: 
    0 1 2 
0 1 1 5 
1 2 1 4 
2 3 1 1 
+0

就像一個魔法!非常感謝! – user5779223

+0

我也想知道是否可以通過類似的方式獲取用戶和物品的數量? – user5779223

+0

你是否要求'df.apply(pd.Series.value_counts)'? – EdChum

1

你也編碼列作爲categorical然後獲取代碼。

df['User_ID_code'] = df.User_ID.astype('category').cat.codes 
>>> df 
      User_ID  Item_ID Rating User_ID_code 
0 A12VH45Q3H5R5I B000NWJTKW  5    0 
1 A3J8AQWNNI3WSN B000NWJTKW  4    2 
2 A1XOBWIL4MILVM B000NWJTKW  1    1 
相關問題