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?
Advertisement
Answer
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