小编典典

堆叠数据框列(python)

python

我正在寻找一种方法来反向旋转数据框。据我所知,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

这样做最有效的方法是什么?


阅读 311

收藏
2021-01-20

共1个答案

小编典典

假设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)
2021-01-20