Search code examples
pythonpandasdataframematrixsparse-matrix

pandas - creating new rows of combination with value of 0


I have a pandas dataframe like

user_id music_id has_rating
A a 1
B b 1

and I would like to automatically add new rows for each of user_id & music_id for those users haven't rated, like

user_id music_id has_rating
A a 1
A b 0
B a 0
B b 1

for each of user_id and music_id combination pairs those are not existing in my Pandas dataframe yet.

is there any way to append such rows automatically like this?


Solution

  • You can use a temporary reshape with pivot_table and fill_value=0 to fill the missing values with 0:

    (df.pivot_table(index='user_id', columns='music_id',
                    values='has_rating', fill_value=0)
       .stack().reset_index(name='has_rating')
     )
    

    Output:

      user_id music_id  has_rating
    0       A        a           1
    1       A        b           0
    2       B        a           0
    3       B        b           1