2015-10-01 113 views
0

我有一列中的數據幀稱爲product_type如:熊貓 - 如何替換系列中的特定值?

df1.product_type.unique() 

>> ["prod_1", "prod_2", "prod_3"] 

df.prod_cost.dtype 

>> dtype('O') 

我正在尋找最有效的方式以數值[1, 2, 3]來替換。 感謝

回答

1

使用factorize編碼新列:

In [2]: 
df = pd.DataFrame({'a':list('abcdbcbccc')}) 
df 

Out[2]: 
    a 
0 a 
1 b 
2 c 
3 d 
4 b 
5 c 
6 b 
7 c 
8 c 
9 c 

In [5]: 
df['code'] = df['a'].factorize()[0] + 1 
df 

Out[5]: 
    a code 
0 a  1 
1 b  2 
2 c  3 
3 d  4 
4 b  2 
5 c  3 
6 b  2 
7 c  3 
8 c  3 
9 c  3 

所以你的情況:

df1['product_type'] = df1['product_type'].factorize()[0] + 1 

應該工作

1

轉換列作爲category,然後拿到碼。

df1 = pd.DataFrame({'product_type': ['prod_1'] * 3 + ['prod_2'] * 3 + ['prod_3'] * 3}) 
df1['product_type_code'] = df1.product_type.astype('category').cat.codes 

>>> df1 
    product_type product_type_code 
0  prod_1     0 
1  prod_1     0 
2  prod_1     0 
3  prod_2     1 
4  prod_2     1 
5  prod_2     1 
6  prod_3     2 
7  prod_3     2 
8  prod_3     2