python:使用string生成数字列到列

时间:2016-09-28 13:52:29

标签: python pandas

我有一个数据框,它是列的一部分

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

我需要创建带有类别的列,转换为数字。 我的意思是

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

我该怎么做?使用numpy

2 个答案:

答案 0 :(得分: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 :(得分: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])