堆叠数据框列(Pandas)

Stacking dataframe columns (Pandas)

我正在寻找一种反向旋转数据框的方法。据我所知,pandas 提供了一个枢轴或 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<br> 0 一个 1 0 乙 1 0 C 0 1个1 1乙3 1 C 1 2个1 2乙5 2 C 0

最有效的方法是什么?

假设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)