I would like to reverse a dataframe with dummy variables. For example,
from df_input:
Course_01 Course_02 Course_03 0 0 1 1 0 0 0 1 0
To df_output
Course 0 03 1 01 2 02
I have been looking at the solution provided at Reconstruct a categorical variable from dummies in pandas but it did not work. Please, Any help would be much appreciated.
Many Thanks, Best Regards, Carlo
Advertisement
Answer
We can use wide_to_long
, then select rows that are not equal to zero i.e
ndf = pd.wide_to_long(df, stubnames='T_', i='id',j='T') T_ id T id1 30 0 id2 30 1 id1 40 1 id2 40 0 not_dummy = ndf[ndf['T_'].ne(0)].reset_index().drop('T_',1) id T 0 id2 30 1 id1 40
Update based on your edit :
ndf = pd.wide_to_long(df.reset_index(), stubnames='T_',i='index',j='T') not_dummy = ndf[ndf['T_'].ne(0)].reset_index(level='T').drop('T_',1) T index 1 30 0 40