在矩阵[python]中添加缺失的列并用0的值填充

在矩阵[python]中添加缺失的列并用0的值填充,python,pandas,matrix,indexing,Python,Pandas,Matrix,Indexing,我有一个矩阵的形式: 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

我有一个矩阵的形式:

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_id)并将其填充为值0(我不知道哪些movie_id没有准确录制)。例如,我想要一个新的矩阵形式:

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
.          ...
.
.
使用带有
fill\u value=0的
axis=1
使数据帧列符合新的索引范围:

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

我假设矩阵的变量名是
matrix

n_moovies=1500
moove_id=matrix.columns
对于范围(1,n_moovies+1)内的moovie_id:
#在id-s上迭代
如果moovie_id不在moove_id中:
#如果没有这样的moovie,则创建一个填充有零的列
矩阵[moovie_id]=0