As per title, I have a Pandas dataframe containing coordinates and a value (z) like:
import pandas as pd
df = pd.DataFrame(
     columns=['x', 'y', 'k'],
     data=((x, y, x * y) for x in range(3) for y in range(3)))
resulting in:
   x  y  k
0  0  0  0
1  0  1  0
2  0  2  0
3  1  0  0
4  1  1  1
5  1  2  2
6  2  0  0
7  2  1  2
8  2  2  4
I want to obtain:
   0  1  2
0  0  0  0
1  0  1  2
2  0  2  4
(where x values are now the rows and y values are now the columns).
What would be the most Pythonic way of doing this with Pandas?
This would be similar to obtaining a dense representation of a matrix from a sparse one.
Note: the x and y values could be anything (not necessarily integers that happen to map nicely indexes).
p.s. I know I could do two manual loops, but that's what I am trying to avoid.
 
    