我正在寻找一种方法来反向旋转数据框。据我所知,pandas提供了一种pivot或pivot_table方法将EAV df转换为“普通”方法。但是,还有一种方法可以做逆运算吗?
所以给定数据框:
$df userid A B C 0 1 1 0 1 1 3 1 2 1 5 0
我想将其转换为(EAV模型):
$df E A V 0 A 1 0 B 1 0 C 0 1 A 1 1 B 3 1 C 1 2 A 1 2 B 5 2 C 0
这样做最有效的方法是什么?
假设userid是索引,df.stack将执行以下操作:
userid
df.stack
In [133]: df.stack().reset_index().rename(columns={'userid' : 'E', 'level_1' : 'A', 0 : 'V'}) Out[133]: E A V 0 0 A 1 1 0 B 1 2 0 C 0 3 1 A 1 4 1 B 3 5 1 C 1 6 2 A 1 7 2 B 5 8 2 C 0
如果userid不是索引,请像这样设置:
df.set_index('userid', inplace=True)