Pandas One-Hot-Encoding с детерминированностью c порядок - PullRequest
0 голосов
/ 12 июля 2020

скажем, у меня есть категориальный столбец в DataFrame (например, будний день). И я хочу закодировать его в горячую кодировку. Для этого я использую pandas.get_dummies(). Но я не вижу способа сделать заказ детерминированным c. Например, у меня есть эти два фрейма данных

df1 = pd.DataFrame({'visitors':[220, 240, 180, 210, 220, 260, 270], 'weekday': ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']})
df2 = pd.DataFrame({'visitors':[240, 180, 210, 220, 260, 270, 220], 'weekday': ['Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon']})

И если я вызываю get_dummies() на обоих, я получаю две разные кодировки. Я это вижу, потому что порядок другой. Но есть ли способ сделать так, чтобы любой DataFrame имел одинаковую кодировку, независимо от того, как вводятся значения? Так, например: Mon=1000000, Tue=0100000, et c?

pd.get_dummies(df1['weekday'])
pd.get_dummies(df2['weekday'])

1 Ответ

0 голосов
/ 12 июля 2020

Поведение get_dummies согласовано. Вы видите разницу, потому что позиция visitors изменилась.

print(df1)
print(pd.get_dummies(df1['weekday']))

print()

print(df2)
print(pd.get_dummies(df2['weekday']))

Вот результат:

   visitors weekday
0       220     Mon
1       240     Tue
2       180     Wed
3       210     Thu
4       220     Fri
5       260     Sat
6       270     Sun
   Fri  Mon  Sat  Sun  Thu  Tue  Wed
0    0    1    0    0    0    0    0
1    0    0    0    0    0    1    0
2    0    0    0    0    0    0    1
3    0    0    0    0    1    0    0
4    1    0    0    0    0    0    0
5    0    0    1    0    0    0    0
6    0    0    0    1    0    0    0

   visitors weekday
0       240     Tue
1       180     Wed
2       210     Thu
3       220     Fri
4       260     Sat
5       270     Sun
6       220     Mon
   Fri  Mon  Sat  Sun  Thu  Tue  Wed
0    0    0    0    0    0    1    0
1    0    0    0    0    0    0    1
2    0    0    0    0    1    0    0
3    1    0    0    0    0    0    0
4    0    0    1    0    0    0    0
5    0    0    0    1    0    0    0
6    0    1    0    0    0    0    0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...