在pandas中转置多索引数据帧

时间:2017-11-04 16:11:20

标签: python-3.x pandas pivot-table

HID gen views
1   1   20
1   2   2532
1   3   276
1   4   1684
1   5   779
1   6   200
1   7   545
2   1   20
2   2   7478
2   3   750
2   4   7742
2   5   2643
2   6   208
2   7   585
3   1   21
3   2   4012
3   3   2019
3   4   1073
3   5   3372
3   6   8
3   7   1823
3   8   22

这是数据框的示例部分,其中HID和gen是索引。 它怎么能像这样转变

HID 1   2   3   4   5   6   7   8
1   20  2532    276 1684    779 200 545 nan
2   20  7478    750 7742    2643    208 585 nan
3   21  4012    2019    1073    3372    8   1823    22

2 个答案:

答案 0 :(得分:1)

使用unstack

df = df['views'].unstack()

如果还需要HID列添加reset_index + rename_axis

df = df['views'].unstack().reset_index().rename_axis(None, 1)
print (df)
   HID     1       2       3       4       5      6       7     8
0    1  20.0  2532.0   276.0  1684.0   779.0  200.0   545.0   NaN
1    2  20.0  7478.0   750.0  7742.0  2643.0  208.0   585.0   NaN
2    3  21.0  4012.0  2019.0  1073.0  3372.0    8.0  1823.0  22.0

答案 1 :(得分:1)

它叫做旋转,即

{{1}}
gen     1       2       3       4       5      6       7     8
HID                                                           
1    20.0  2532.0   276.0  1684.0   779.0  200.0   545.0   NaN
2    20.0  7478.0   750.0  7742.0  2643.0  208.0   585.0   NaN
3    21.0  4012.0  2019.0  1073.0  3372.0    8.0  1823.0  22.0