Python将多列熊猫数据框转换为单值表数据框

时间:2018-09-12 14:56:02

标签: python python-3.x pandas dataframe

我希望将以下多级列pandas数据框转换为单值表。

初始表格:

    Name    Monica          Rachel      
    Paper    1  2   3        1  2   3

2018-01-01  13  33  15      31  25  33
2018-06-01  11  43  30      36  23  37

所需的新数据框表格式:

Index        Name   Paper   Scores
2018-01-01  Monica    1       13
2018-01-01  Monica    2       33
2018-01-01  Monica    3       15
2018-06-01  Monica    1       11
2018-06-01  Monica    2       43
2018-06-01  Monica    3       30
2018-01-01  Rachel    1       31
2018-01-01  Rachel    2       25
2018-01-01  Rachel    3       33
2018-06-01  Rachel    1       36
2018-06-01  Rachel    2       23
2018-06-01  Rachel    3       37

我已经尝试了3个for循环,但是无法多次复制Index值。

3 个答案:

答案 0 :(得分:4)

就像@Wen声明使用melt

df.rename_axis('Index').reset_index().melt('Index', value_name='Score')

输出:

         Index Name Paper  Score
0   2018-01-01    m     1     13
1   2018-06-01    m     1     11
2   2018-01-01    m     2     33
3   2018-06-01    m     2     43
4   2018-01-01    m     3     15
5   2018-06-01    m     3     30
6   2018-01-01    r     1     31
7   2018-06-01    r     1     36
8   2018-01-01    r     2     25
9   2018-06-01    r     2     23
10  2018-01-01    r     3     33
11  2018-06-01    r     3     37

答案 1 :(得分:3)

stackreset_index

df.rename_axis('Index').stack(['Name', 'Paper']).reset_index(name='Scores')

         Index    Name  Paper  Scores
0   2018-01-01  Monica      1      13
1   2018-01-01  Monica      2      33
2   2018-01-01  Monica      3      15
3   2018-01-01  Rachel      1      31
4   2018-01-01  Rachel      2      25
5   2018-01-01  Rachel      3      33
6   2018-06-01  Monica      1      11
7   2018-06-01  Monica      2      43
8   2018-06-01  Monica      3      30
9   2018-06-01  Rachel      1      36
10  2018-06-01  Rachel      2      23
11  2018-06-01  Rachel      3      37

答案 2 :(得分:0)

将其放入数据框,然后按名称和纸张分组。

new_table = table.groupby(['Name','Paper'])]