Petr Petrov
Petr Petrov

Reputation: 4442

python: generate numeric column to column with string

I have a dataframe and it's a part of a column

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

I need to create column with category, converted to numeric. I mean

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

How can I do that? using numpy?

Upvotes: 1

Views: 94

Answers (2)

stars_point
stars_point

Reputation: 106

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])

Upvotes: 1

jezrael
jezrael

Reputation: 862671

Use factorize:

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

Then you can also convert it to category for saving memory:

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

Sample:

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

Upvotes: 1

Related Questions