2016-09-28 55 views
1

我有一個數據幀,這是一個列蟒蛇:生成數字柱之間用繩子

category 
Search 
Search 
Онлайн-магазин 
Онлайн-магазин 
Форумы и отзывы 
Онлайн-магазин 
Форумы и отзывы 
Агрегатор 
Информационный ресурс 
Онлайн-магазин 
Телеком 
Онлайн-магазин 

我需要用類創建列,轉換爲數字的一部分。我的意思是

category numeric_category 
Search  1 
Search  1 
Онлайн-магазин 2 
Онлайн-магазин 2 
Форумы и отзывы 3 
Онлайн-магазин 2 
Форумы и отзывы 3 
Агрегатор 4 
Информационный ресурс 5 
Онлайн-магазин 2 
Телеком 6 
Онлайн-магазин 2 

我該怎麼做?使用numpy

回答

1

使用factorize

df['numeric_category'] = pd.factorize(df.category)[0] + 1 

然後你也可以將其轉換爲category節省內存:

df['numeric_category'] = pd.Categorical(pd.factorize(df.category)[0] + 1) 

樣品:

df = pd.DataFrame({'category':['a','s','a']}) 
print (df) 
    category 
0  a 
1  s 
2  a 

df['numeric_category'] = pd.Categorical(pd.factorize(df.category)[0] + 1) 
print (df) 
    category numeric_category 
0  a    1 
1  s    2 
2  a    1 
1
dict={} 
for item in df.category: 
    if item not in dict: 
     dict[item]=len(dict)+1 

print "category\t"+"numeric_category" 

for item in df.category: 
    print "%s\t%s"%(item,dict[item])