将一些行转为列 pandas[英] Transpose some rows to columns pandas

本文是小编为大家收集整理的关于将一些行转为列 pandas的处理方法,想解了将一些行转为列 pandas的问题怎么解决?将一些行转为列 pandas问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在使用 pandas (python) 并且有一个数据框,我想在其中保留一些列,并将一些列转换为行,以减少列数并且也不会丢失列中的数据.例如,以下是我的数据框:

ID  Name  Gender       R1      R2      R3      R4      R5     R6
-------------------------------------------------------------------
01  Abc     M          A1      A2      B3      B1      D2     A3
02  Cde     F          A2      B1      B2      D1      C2     C3

我想保持 id、name、gender 不变,并将 R 的列转换为行,例如:

ID  Name Gender  R  R_no
------------------------
01  Abc     M    A1  1
01  Abc     M    A2  2
01  Abc     M    B3  3
01  Abc     M    B1  4
01  Abc     M    D2  5
01  Abc     M    A3  6
02  Cde     F    A2  1
02  Cde     F    B1  2
02  Cde     F    B2  3
02  Cde     F    D1  4
02  Cde     F    C2  5
02  Cde     F    C3  6

谁能帮我解决这个问题?提前致谢!

推荐答案

使用 stack:

df = df.set_index(['ID','Name','Gender'])
df.columns = df.columns.str.extract('(\d+)', expand=False)
df = df.stack().reset_index(name='R').rename(columns={'level_3':'R_no'})
print (df)
    ID Name Gender R_no   R
0    1  Abc      M    1  A1
1    1  Abc      M    2  A2
2    1  Abc      M    3  B3
3    1  Abc      M    4  B1
4    1  Abc      M    5  D2
5    1  Abc      M    6  A3
6    2  Cde      F    1  A2
7    2  Cde      F    2  B1
8    2  Cde      F    3  B2
9    2  Cde      F    4  D1
10   2  Cde      F    5  C2
11   2  Cde      F    6  C3

本文地址:https://www.itbaoku.cn/post/1727833.html