У меня есть pandas df с x (широта), y (долгота) и z (топография / высота).
Я хочу построить трехмерный график поверхности, но для этого мне нужен 2D-массив z, тогда как у меня есть 1D-массив (1 столбец).
Есть ли способ повернуть фрейм данных так, чтобы широты были индексом, долготы были заголовком, а z - значениями в таблице?
Я пробовал:
newdf = df.pivot(index='Pt_Latitude', columns='Pt_Longitude', values='topography')
, но это дает мне ошибку индекса:
Pt_Longitude Pt_Latitude topography Coordinated_Universal_Time S
0 272.799970 -45.261200 2670.92 2009-07-20T12:12:00.90412170 1
1 272.800520 -45.261986 2677.35 2009-07-20T12:12:00.90412170 2
2 272.798841 -45.261578 2670.04 2009-07-20T12:12:00.90412170 3
3 272.799396 -45.260423 2663.68 2009-07-20T12:12:00.90412170 4
4 272.801063 -45.260832 2671.67 2009-07-20T12:12:00.90412170 5
Traceback (most recent call last):
File "catalan.py", line 28, in <module>
newdf = df.pivot(index='Pt_Latitude', columns='Pt_Longitude', values='topography')
File "C:\Users\polyq\Anaconda3\lib\site-packages\pandas\core\frame.py", line 5923, in pivot
return pivot(self, index=index, columns=columns, values=values)
File "C:\Users\polyq\Anaconda3\lib\site-packages\pandas\core\reshape\pivot.py", line 450, in pivot
return indexed.unstack(columns)
File "C:\Users\polyq\Anaconda3\lib\site-packages\pandas\core\series.py", line 3550, in unstack
return unstack(self, level, fill_value)
File "C:\Users\polyq\Anaconda3\lib\site-packages\pandas\core\reshape\reshape.py", line 419, in unstack
constructor=obj._constructor_expanddim,
File "C:\Users\polyq\Anaconda3\lib\site-packages\pandas\core\reshape\reshape.py", line 141, in __init__
self._make_selectors()
File "C:\Users\polyq\Anaconda3\lib\site-packages\pandas\core\reshape\reshape.py", line 176, in _make_selectors
mask.put(selector, True)
IndexError: index 571859901 is out of bounds for axis 0 with size 571829246