从已转换为列表的数据数组中删除坐标
Removing coordinates from a dataarray that has been converted to a list
我有一个数据数组,其中包含全球经纬度点的值列表。我想为特定城市提供经纬度值列表,并在这些经纬度点应用这些值来创建数据框。为此,我执行以下代码。
df1=pd.read_csv('E:/Riskpulse_HD/TroPYcal/GenscapePortList.csv')
lats=df1['Latitude']
lons=df1['Longitude']
count_city=[]
for idx,(lon,lat) in enumerate(zip(lons,lats)):
val = grid.sel(lat=lat, lon=lon, method='nearest')
count_city.append(val)
print(np.shape(count_city))
打印出来的是这样的:
[<xarray.DataArray ()>
array(0.)
Coordinates:
lat float64 40.0
lon float64 28.0,
<xarray.DataArray ()>
array(0.)
Coordinates:
lat float64 40.0
lon float64 28.0,
<xarray.DataArray ()>
array(0.)
Coordinates:
lat float64 42.0
lon float64 28.0,
所以这看起来仍然像一个数据数组,但在执行 type()
命令时它是一个列表。我怎样才能简单地去除这个列表的坐标部分?
创建数据框时,它看起来像这样:
df1['Counts']= count_city
df1.head()
Latitude Longitude Port Name Counts
0 39.871112 20.003421 Sarande <xarray.DataArray ()>\narray(0.)\nCoordinates:...
1 40.450605 19.483051 Vlora <xarray.DataArray ()>\narray(0.)\nCoordinates:...
2 41.810046 19.584720 Shengjin <xarray.DataArray ()>\narray(0.)\nCoordinates:...
3 41.308849 19.454677 Durres <xarray.DataArray ()>\narray(0.)\nCoordinates:...
4 35.819101 -0.247319 Bettioua <xarray.DataArray ()>\narray(0.)\nCoordinates:...
我只想要与坐标关联的所有值。当类型是数据数组时,我很熟悉如何执行此操作,但不确定列表。
代码的结果确实是一个列表,但是 DataArray
个对象的列表。来自 xarray docs:
xarray tries hard to be self-consistent: operations on a DataArray
(resp. Dataset
) return another DataArray
(resp. Dataset
) object. In particular, operations returning scalar values (e.g. indexing or aggregations like mean or sum applied to all axes) will also return xarray objects.
要获得一个 numpy 数组,您必须添加 .values
(如果使用 Dask 数组并希望保留底层数据结构,也可以是 .data
)。
val = grid.sel(lat=lat, lon=lon, method='nearest')
我有一个数据数组,其中包含全球经纬度点的值列表。我想为特定城市提供经纬度值列表,并在这些经纬度点应用这些值来创建数据框。为此,我执行以下代码。
df1=pd.read_csv('E:/Riskpulse_HD/TroPYcal/GenscapePortList.csv')
lats=df1['Latitude']
lons=df1['Longitude']
count_city=[]
for idx,(lon,lat) in enumerate(zip(lons,lats)):
val = grid.sel(lat=lat, lon=lon, method='nearest')
count_city.append(val)
print(np.shape(count_city))
打印出来的是这样的:
[<xarray.DataArray ()>
array(0.)
Coordinates:
lat float64 40.0
lon float64 28.0,
<xarray.DataArray ()>
array(0.)
Coordinates:
lat float64 40.0
lon float64 28.0,
<xarray.DataArray ()>
array(0.)
Coordinates:
lat float64 42.0
lon float64 28.0,
所以这看起来仍然像一个数据数组,但在执行 type()
命令时它是一个列表。我怎样才能简单地去除这个列表的坐标部分?
创建数据框时,它看起来像这样:
df1['Counts']= count_city
df1.head()
Latitude Longitude Port Name Counts
0 39.871112 20.003421 Sarande <xarray.DataArray ()>\narray(0.)\nCoordinates:...
1 40.450605 19.483051 Vlora <xarray.DataArray ()>\narray(0.)\nCoordinates:...
2 41.810046 19.584720 Shengjin <xarray.DataArray ()>\narray(0.)\nCoordinates:...
3 41.308849 19.454677 Durres <xarray.DataArray ()>\narray(0.)\nCoordinates:...
4 35.819101 -0.247319 Bettioua <xarray.DataArray ()>\narray(0.)\nCoordinates:...
我只想要与坐标关联的所有值。当类型是数据数组时,我很熟悉如何执行此操作,但不确定列表。
代码的结果确实是一个列表,但是 DataArray
个对象的列表。来自 xarray docs:
xarray tries hard to be self-consistent: operations on a
DataArray
(resp.Dataset
) return anotherDataArray
(resp.Dataset
) object. In particular, operations returning scalar values (e.g. indexing or aggregations like mean or sum applied to all axes) will also return xarray objects.
要获得一个 numpy 数组,您必须添加 .values
(如果使用 Dask 数组并希望保留底层数据结构,也可以是 .data
)。
val = grid.sel(lat=lat, lon=lon, method='nearest')