Reputation: 559
I have checked around, but it seems I can't find this question (or at least an answer) anywhere. Say I have this data frame with empty cells
data = pd.DataFrame( {'A': {0: 'a1', 1: 'a1', 2: 'a1', 3: 'a1', 4: 'a1', 5: 'a2', 6: 'a2', 7: 'a2', 8: 'a2', 9: 'a2'}, 'B': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: 'bb', 6: 'bc', 7: 'bd', 8: 'be', 9: 'bf'}, 'col': {0: 10, 1: 10, 2: 10, 3: 10, 4: 10, 5: 10, 6: 10, 7: 10, 8: 10, 9: 10}, 'C': {0: 'c1', 1: 'c1', 2: 'c1', 3: 'c1', 4: 'c1', 5: 'c2', 6: 'c2', 7: 'c2', 8: 'c2', 9: 'c2'}, 'D': {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0}, 'E': {0: 'e1', 1: 'e2', 2: 'e3', 3: 'e4', 4: 'e5', 5: nan, 6: nan, 7: nan, 8: nan, 9: nan}} )
I'd like to pivot column values, so I'm trying:
pivot = pd.pivot_table(data, values='D', index=['A', 'B', 'C', 'E'], columns=['col'])
I'd expect something like
Instead, I get an empty table. Can anyone help here?
Upvotes: 0
Views: 749
Reputation: 3260
pivot = pd.pivot(data, values='D', index=['A', 'B', 'C', 'E'], columns=['col'])
If you want to reset the index you can use pivot.reset_index()
which returns:
col A B C E 10
0 a1 NaN c1 e1 0
1 a1 NaN c1 e2 0
2 a1 NaN c1 e3 0
3 a1 NaN c1 e4 0
4 a1 NaN c1 e5 0
5 a2 bb c2 NaN 0
6 a2 bc c2 NaN 0
7 a2 bd c2 NaN 0
8 a2 be c2 NaN 0
9 a2 bf c2 NaN 0
Upvotes: 1