как решить эту проблему изменения данных - PullRequest
0 голосов
/ 21 ноября 2018

скажем, у меня есть датафрейм, состоящий из этих двух столбцов.

User_id hotel_cluster 
   1     0
   2     2
   3     2
   3     3 
   3     0
   4     2

Я хочу изменить это на что-то вроде этого.Мне нужно написать функцию или есть способ сделать это пандами?

User_id hotel_cluster_0 hotel_cluster_1 hotel_cluster_2 hotel_cluster_3
  1          1                  0             0              0
  2          0                  0             1              0
  3          1                  0             1              1
  4          0                  0             1              0

Пожалуйста, помогите!Извините, если я не публикую вопрос в нужном формате. Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Простой способ, если вам не нужны не появляющиеся значения, это использовать pd.get_dummies:

pd.get_dummies(df.hotel_cluster, prefix = 'hotel_cluster').set_index(df.User_id)

В противном случае вам нужно что-то вроде решения @ piRSquared.

0 голосов
/ 21 ноября 2018

СМОТРИ ТАКЖЕ


IIUC:

Вариант 1

Первое изменение 'hotel_cluster' на категорию, включающую категории, которые неt существует

col = 'hotel_cluster'
df[col] = pd.Categorical(df[col], categories=[0, 1, 2, 3])
pd.crosstab(*map(df.get, df)).add_prefix(f"{col}_")

hotel_cluster  hotel_cluster_0  hotel_cluster_1  hotel_cluster_2  hotel_cluster_3
User_id                                                                          
1                            1                0                0                0
2                            0                0                1                0
3                            1                0                1                1
4                            0                0                1                0

Вариант 2

Переиндексация после crosstab

pd.crosstab(*map(df.get, df)).reindex(
    columns=range(4), fill_value=0
).add_prefix('hotel_cluster_')

hotel_cluster  hotel_cluster_0  hotel_cluster_1  hotel_cluster_2  hotel_cluster_3
User_id                                                                          
1                            1                0                0                0
2                            0                0                1                0
3                            1                0                1                1
4                            0                0                1                0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...