从已转换为列表的数据数组中删除坐标

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')