Как получить координаты xr.Dataset в виде строки?

#python #dataset #python-xarray

#python #набор данных #python-xarray

Вопрос:

Я создал xarray.Набор данных. В наборе данных я хотел бы получить список определенных координат.

Пример кода показан ниже. В коде набор данных ‘ds’ содержит 4 ‘MachineType’, а именно ‘MC_A’, ‘MC_B’, ‘MC_C’ и ‘MC_D’. Я хотел бы получить их в виде строки, чтобы последний цикл for выполнял ‘MC_A’, ‘MC_B’, ‘MC_C’, ‘MC_D’.

 import xarray as xr
import numpy as np
import pandas as pd

x = np.linspace(0,1500,16)
y1 = np.random.random((1,1,1,1,1,1,6,len(x)))
y2 = np.random.random((1,1,1,1,1,1,6,len(x)))
y3 = np.random.random((1,1,1,1,1,1,6,len(x)))
y4 = np.random.random((1,1,1,1,1,1,6,len(x)))

da1 = xr.DataArray(y1, dims=('MachineID','MachineType','Year','Month','Compensation','Axis','SensorID','Pos'),
                       coords={'MachineID':['MC_A'],'MachineType':['Car'],'Year':['2020'],'Month':['Aug'],'Compensation':[1],
                            'Axis':['X'],'SensorID':range(6),'Pos':x},
                       name='val')

da2 = xr.DataArray(y2, dims=('MachineID','MachineType','Year','Month','Compensation','Axis','SensorID','Pos'),
                       coords={'MachineID':['MC_B'],'MachineType':['Car'],'Year':['2020'],'Month':['Aug'],'Compensation':[1],
                            'Axis':['X'],'SensorID':range(6),'Pos':x},
                       name='val')

da3 = xr.DataArray(y3, dims=('MachineID','MachineType','Year','Month','Compensation','Axis','SensorID','Pos'),
                       coords={'MachineID':['MC_C'],'MachineType':['Train'],'Year':['2020'],'Month':['Aug'],'Compensation':[1],
                            'Axis':['X'],'SensorID':range(6),'Pos':x},
                       name='val')

da4 = xr.DataArray(y4, dims=('MachineID','MachineType','Year','Month','Compensation','Axis','SensorID','Pos'),
                       coords={'MachineID':['MC_D'],'MachineType':['Train'],'Year':['2020'],'Month':['Aug'],'Compensation':[1],
                            'Axis':['X'],'SensorID':range(6),'Pos':x},
                       name='val')

#%%
df = pd.concat([da1.to_dataframe(), da2.to_dataframe(), da3.to_dataframe(), da4.to_dataframe()])
ds=xr.Dataset.from_dataframe(df)
ds


#%% This part is not working as I want
for machineid in ds['MachineID']:
    print(machineid)
  

Ответ №1:

Просто добавьте .values в команду печати и измените тип на str :

 for machineid in ds['MachineID']:
    print(str(machineid.values))