Добавьте и заполните отсутствующие столбцы значениями 0 в матрице pandas [python] - PullRequest
1 голос
/ 07 августа 2020

У меня есть матрица вида:

movie_id   1     2     3     ...   1494    1497   1500
user_id                                                               
1600       1.0   0.0   1.0   ...   0.0     0.0    1.0
1601       1.0   0.0   0.0   ...   1.0     0.0    0.0
1602       0.0   0.0   0.0   ...   0.0     1.0    1.0
1603       0.0   0.0   1.0   ...   0.0     0.0    0.0
1604       1.0   0.0   0.0   ...   1.0     0.0    0.0
.          ...
.
.

Как вы можете видеть, хотя фильмы в моем наборе данных имеют размер 1500, некоторые фильмы не были записаны из-за предварительной обработки, что мои данные ушли через.

Я хочу добавить и заполнить все столбцы (movie_ids), которые не были записаны, значениями 0 (я не знаю, какие movie_ids точно не были записаны). Так, например, мне нужна новая матрица вида:

movie_id   1     2     3     ...   1494    1495   1496 1497 1498 1499 1500
user_id                                                               
1600       1.0   0.0   1.0   ...   0.0     0.0    0.0  0.0  0.0  0.0  1.0
1601       1.0   0.0   0.0   ...   1.0     0.0    0.0  0.0  0.0  0.0  0.0 
1602       0.0   0.0   0.0   ...   0.0     0.0    0.0  1.0  0.0  0.0  1.0
1603       0.0   0.0   1.0   ...   0.0     0.0    0.0  0.0  0.0  0.0  0.0
1604       1.0   0.0   0.0   ...   1.0     0.0    0.0  0.0  0.0  0.0  0.0
.          ...
.
.

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Я предполагаю, что имя переменной матрицы matrix

n_moovies = 1500
moove_ids = matrix.columns

for moovie_id in range(1, n_moovies + 1):
    # iterate over id-s
    if moovie_id not in moove_ids:
        # if there's no such moovie create a column filled with zeros
        matrix[moovie_id] = 0
1 голос
/ 07 августа 2020

Используйте DataFrame.reindex вместе с axis=1 с fill_value=0, чтобы согласовать столбцы фрейма данных с новым диапазоном индексов:

df = df.reindex(range(df.columns.min(), df.columns.max() + 1), axis=1, fill_value=0)

Результат:

movie_id     1     2     3      1498  1499  1500
user_id                                     
1600       1.0   0.0   1.0         0     0   1.0
1601       1.0   0.0   0.0         0     0   0.0
1602       0.0   0.0   0.0 ...     0     0   1.0
1603       0.0   0.0   1.0 ...     0     0   0.0
1604       1.0   0.0   0.0         0     0   0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...