我目前在xarray中有一个4D数据集ds
,看起来像这样:
<xarray.Dataset>
Dimensions: (lat: 60, lon: 78, time: 216, pres: 395)
Coordinates:
* lat (lat) float32 0.5 1.5 2.5 3.5 4.5 5.5 ... 55.5 56.5 57.5 58.5 59.5
* lon (lon) float32 -45.5 -44.5 -43.5 -42.5 ... -69.5 -75.5 -74.5 -76.5
* time (time) float32 7.32e+05 7.32e+05 7.32e+05 ... 7.385e+05 7.385e+05
* pres (pres) float64 2.5 7.5 12.5 17.5 ... 1.962e+03 1.968e+03 1.972e+03
Data variables:
var (pres, lat, lon, time) float64 2.03e+03 2.03e+03 ... nan nan>
我的目标是把它变成一个看起来像这样的pandas df:
id time pres param 20.5-70.5 20.5-71.5 20.5-72.5
0 0 0 var 2085 2073 2057
1 0 1 var 2114 2156 2054
2 0 2 var 2039 2006 2179
3 1 0 var 2199 2144 2033
4 1 1 var 2056 2102 2191
5 1 2 var 2062 2033 2052
6 2 0 var 2001 2153 2170
7 2 1 var 2187 2120 2100
8 2 2 var 2138 2076 2002
这里有一个time
和pres
的多索引,一个param
列(因为我可能一次有多个变量),每个像素(如此配对的lat-lon)作为列标题,使得对于每个像素列I,具有对应于time
和pres
的var
值。我的分析的下一部分(包括一些矢量化)需要使用此格式。
我尝试了一些东西,包括stacked = ds.stack(coordinates=["lat", "lon"])
,我认为这是我想做的事情的开始,然后做stacked.to_dataframe()
,但后者解栈我的配对坐标。我想我错过了一些东西,但我不太确定如何去做?
任何帮助都非常感谢!
谢谢
1条答案
按热度按时间mhd8tkvw1#
(由于您没有提供示例,因此应该修改此示例)
使用
stack/unstack
重塑数据集:输出: