将Pandas数据框重塑为多级列

时间:2020-02-07 05:16:24

标签: python-3.x pandas

我有一个看起来像这样的数据框:

df = pd.DataFrame(
    {
        "id": [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4],
        "mod": ["a", "a", "b", "b"] * 4,
        "qid": [11, 12, 13, 14] * 4,
        "ans": ["Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L", "K"],
    }
)
df

    id  mod qid ans
0   1   a   11  Z
1   1   a   12  Y
2   1   b   13  X
3   1   b   14  W
4   2   a   11  V
5   2   a   12  U
6   2   b   13  T
7   2   b   14  S
8   3   a   11  R
9   3   a   12  Q
10  3   b   13  P
11  3   b   14  O
12  4   a   11  N
13  4   a   12  M
14  4   b   13  L
15  4   b   14  K

每个qid值完全适合mod。例如,qid = 11仅出现在mod = a中。

我想将数据重整为宽格式,以mod和qid作为列级别:

         a       b
    11  12  13  14
id              
1   Z   Y   X   W
2   V   U   T   S
3   R   Q   P   O
4   N   M   L   K

在熊猫市有可能吗?我尝试过pivot()并没有运气。

1 个答案:

答案 0 :(得分:0)

使用

pd.pivot_table(df, index='id', columns=['mod', 'qid'], aggfunc='first')

输出

    ans
mod a       b
qid 11  12  13  14
id              
1   Z   Y   X   W
2   V   U   T   S
3   R   Q   P   O
4   N   M   L   K