Разложить столбцы в двух разных фреймах - PullRequest
0 голосов
/ 03 мая 2020

У меня есть два DataFrames, и в каждом из них у меня есть категорический столбец col. Я хочу заменить все категории числами, поэтому я решил сделать это следующим образом:

df1['col'] = pd.factorize(df1['col'])[0]

Теперь вопрос заключается в том, как я могу кодировать df2[col] таким же образом? И как я могу также кодировать категории, которые присутствуют в df2[col], но не в df1[col]?

1 Ответ

1 голос
/ 03 мая 2020

Вам нужен LabelEncoder

from sklearn.preprocessing import LabelEncoder

enc = LabelEncoder()
df1['col'] = enc.fit_transform(df1['col'])
df2['col'] = enc.transform(df2['col'])

для невидимого ярлыка, это может быть решением:

enc = LabelEncoder()
enc.fit(df1['col'])
diz_map = dict(zip(enc.classes_, enc.transform(enc.classes_)+1))

for i in set(df2['col']).difference(df1['col']):
    diz_map[i] = 0

df1['col'] = [diz_map[i] for i in df1['col'].values]
df2['col'] = [diz_map[i] for i in df2['col'].values]

вы отображаете как 0 все невидимые значения в df2 ['col']

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