python - Stacking dataframe columns (Pandas) -
i looking way pivot dataframe in reverse direction. best of knowledge, pandas provides pivot or pivot_table method transform eav df "normal" one. however, there way inverse?
so given dataframe:
$df userid b c 0 1 1 0 1 1 3 1 2 1 5 0
i transform (a eav model):
$df e v
0 1 0 b 1 0 c 0 1 1 1 b 3 1 c 1 2 1 2 b 5 2 c 0
what efficient way so?
assuming userid index, df.stack it:
in [133]: df.stack().reset_index().rename(columns={'userid' : 'e', 'level_1' : 'a', 0 : 'v'}) out[133]: e v 0 0 1 1 0 b 1 2 0 c 0 3 1 1 4 1 b 3 5 1 c 1 6 2 1 7 2 b 5 8 2 c 0 if userid not index, set this:
df.set_index('userid', inplace=true)
Comments
Post a Comment