【问题标题】:Add and fill missing columns with values of 0s in pandas matrix [python]在熊猫矩阵[python]中添加和填充值为0的缺失列
【发布时间】:2020-08-07 13:16:11
【问题描述】:

我有一个矩阵形式:

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
.          ...
.
.

【问题讨论】:

    标签: python pandas matrix indexing


    【解决方案1】:

    使用 DataFrame.reindexaxis=1fill_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
    

    【讨论】:

      【解决方案2】:

      我假设矩阵的变量名是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
      

      【讨论】:

        猜你喜欢
        • 2018-01-16
        • 2019-06-22
        • 1970-01-01
        • 1970-01-01
        • 2020-06-06
        • 2017-02-08
        • 2020-01-26
        • 1970-01-01
        • 2021-10-02
        相关资源
        最近更新 更多