Удаление координат из массива данных, преобразованного в список - PullRequest
1 голос
/ 29 мая 2020

У меня есть массив данных, содержащий список значений по широте и долготе точек по всему миру. Я хочу предоставить список значений широты и долготы для определенных c городов и применить значения в этих точках широты и долготы для создания фрейма данных. Чтобы выполнить sh это, я использую следующий код.

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(), это список. Как я могу go просто удалить часть координат из этого списка?

При создании фрейма данных он выглядит так:

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:...

Мне просто нужны все значения, связанные с координатами. Я знаком с тем, как это сделать, когда типом является массив данных, но не уверен в списке.

1 Ответ

1 голос
/ 30 мая 2020

Результатом кода действительно является список, но список DataArray объектов. Из xarray docs :

xarray изо всех сил пытается быть самосогласованным: операции с DataArray (соответственно Dataset) возвращают другой DataArray (соответственно. Dataset) объект. В частности, операции, возвращающие скалярные значения (например, индексирование или агрегации, такие как среднее или сумма, применяемые ко всем осям), также будут возвращать объекты xarray.

Чтобы вместо этого получить массив numpy, вы должны добавить .values (также может быть .data, если вы работаете с массивами Dask и хотите сохранить базовую структуру данных).

val = grid.sel(lat=lat, lon=lon, method='nearest')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...