堆叠数据框列(熊猫)

发布于 2021-01-29 15:00:32

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

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

关注者
0
被浏览
105
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看