我正在寻找一种反向旋转数据框的方法。据我所知,pandas提供了一个pivot或pivot_table方法来将EAV df转换为" normal"一。但是,还有一种方法可以做反向吗?
所以给出了数据帧:
$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
最有效的方法是什么?
答案 0 :(得分:5)
假设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)