The table I have
JavaScript
x
8
1
{'name': {0: 'Result 1',
2
1: 'Result 2',
3
2: 'Result 1',
4
3: 'Result 2'},
5
'value': {0: '255.00', 1: '260.00', 2: '255.00', 3: '260.00'},
6
'Result 3': {0: 325, 1: 325, 2: 285, 3: 285},
7
'batchnumber': {0: '59530', 1: '59530', 2: '59534', 3: '59534'}}
8
The transpose I want to do is single column transpose
index | name | value | batchnumber |
---|---|---|---|
0 | Result 1 | 255.00 | 59534 |
1 | Result 2 | 260.00 | 59534 |
2 | Result 3 | 285.00 | 59534 |
3 | Result 1 | 255.00 | 59530 |
4 | Result 2 | 260.00 | 59530 |
5 | Result 3 | 325.00 | 59530 |
I tried pivot
JavaScript
1
3
1
df.pivot(index='Result 3', columns='name', values='batchnumber')
2
df = df.transpose()
3
Advertisement
Answer
You can pivot_wider then melt. In this case, you get the same results but rather unmatched rows
JavaScript
1
10
10
1
df.pivot(['batchnumber', 'Result 3'],'name', 'value').reset_index().melt('batchnumber')
2
3
batchnumber name value
4
0 59530 Result 3 325.0
5
1 59534 Result 3 285.0
6
2 59530 Result 1 255.0
7
3 59534 Result 1 255.0
8
4 59530 Result 2 260.0
9
5 59534 Result 2 260.0
10
You could sort before you melt:
JavaScript
1
13
13
1
(df.pivot(['batchnumber', 'Result 3'],'name', 'value')
2
.reset_index()
3
.sort_index(axis=1)
4
.melt('batchnumber'))
5
6
batchnumber name value
7
0 59530 Result 1 255.0
8
1 59534 Result 1 255.0
9
2 59530 Result 2 260.0
10
3 59534 Result 2 260.0
11
4 59530 Result 3 325.0
12
5 59534 Result 3 285.0
13