Панды, как преобразовать любые столбцы, которые содержат слова в числа (я, е, сопоставить их)? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть датафрейм со столбцами, такими как название компании, цена, покупка / продажа, кол-во.Я хочу преобразовать любой столбец, содержащий строку, в числовое значение.Т.е. отображение скажет buy = 1, sell = 2 и т. Д. В идеале я хотел бы создать функцию для этого.

Я знаю, что могу использовать:

df['company_value'] = df['company_name'].rank(method='dense', ascending=False).astype(int)

Но как мне создать функцию для сопоставления любого столбца, содержащего строку / слово, с отображением?

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Используя образцы данных EddyG

df = pd.DataFrame(np.array(['monday','tuesday','wednesday','monday','thursday','monday','friday','monday','saturday','sunday']),columns=['G'])

Вы можете просто использовать

map_dict = dict(enumerate(df.G.unique()))

, давая вам

{0: 'monday',
 1: 'tuesday',
 2: 'wednesday',
 3: 'thursday',
 4: 'friday',
 5: 'saturday',
 6: 'sunday'}
0 голосов
/ 07 марта 2019

РЕДАКТИРОВАТЬ: был вызван ответом Джоша Фридландера ниже.Мне нравится его ракурс, но у него неправильное отображение.Используя эту идею:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.array(['monday','tuesday','wednesday','monday','thursday','monday','friday','monday','saturday','sunday']),columns=['G'])

def mapDFcol(df,colName):

    map_dict = dict([[j,i] for i,j in enumerate(df.loc[:,colName].unique())])

    df[colName+'map'] = [map_dict[i] for i in df.loc[:,colName] ]


    return df



mapDFcol(df,'G')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...