如何在python中为xarray值添加后缀或前缀?
我在xarray中有一组数据,我需要为数据/值添加一些后缀或前缀 为了说明我想做什么,我在这里举了一个在熊猫身上起作用的例子: 通过做如何在python中为xarray值添加后缀或前缀?,python,python-xarray,Python,Python Xarray,我在xarray中有一组数据,我需要为数据/值添加一些后缀或前缀 为了说明我想做什么,我在这里举了一个在熊猫身上起作用的例子: 通过做 import pandas as pd df = pd.DataFrame({'col':['a',0]}) df df['col'] = 'str' + df['col'].astype(str) 我可以从 >>> df col 0 a 1 0 到 但在xarray中,我认为: import xarray as xr da
import pandas as pd
df = pd.DataFrame({'col':['a',0]})
df
df['col'] = 'str' + df['col'].astype(str)
我可以从
>>> df
col
0 a
1 0
到
但在xarray中,我认为:
import xarray as xr
da = xr.DataArray(['1', '2', '3'], [('x', [0, 1, 2])])
dataset = da.to_dataset(name="foo")
阵列将是:
<xarray.Dataset>
Dimensions: (x: 3)
Coordinates:
* x (x) int32 0 1 2
Data variables:
foo (x) int32 1 2 3
我可以将列更改为字符串:
<xarray.DataArray 'foo' (x: 3)>
array(['1', '2', '3'], dtype='<U11')
Coordinates:
* x (x) int32 0 1 2
我得到一个错误:
UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U11'), dtype('<U11')) -> dtype('<U11')
Traceback (most recent call last):
File "<ipython-input-9-a74b1524f2e5>", line 1, in <module>
dataset['foo'] = dataset['foo'].astype(str) + 'suffix'
File "C:\ProgramData\Anaconda3\lib\site-packages\xarray\core\dataarray.py", line 1972, in func
if not reflexive
File "C:\ProgramData\Anaconda3\lib\site-packages\xarray\core\variable.py", line 1674, in func
if not reflexive
UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U11'), dtype('<U11')) -> dtype('<U11')
ufunctype错误:ufunc“add”不包含具有签名匹配类型(dtype)的循环(“您可以使用numpy的字符模块添加字符串
import xarray as xr
import numpy as np
da = xr.DataArray(['1', '2', '3'], [('x', [0, 1, 2])])
dataset = da.to_dataset(name="foo")
dataset['foo'] = ('x', np.char.add(dataset['foo'].astype(str) ,'suffix') )
dataset
>>>array(['1suffix', '2suffix', '3suffix'], dtype='<U7')
将xarray作为xr导入
将numpy作为np导入
da=xr.DataArray(['1','2','3'],[('x',[0,1,2]))
数据集=da.to_数据集(name=“foo”)
数据集['foo']=('x',np.char.add(数据集['foo'].astype(str),'suffix'))
数据集
>>>array(['1suffix','2suffix','3suffix'],dtype='请提供完整的错误消息,以及一个。谢谢!您的方法有效!此方法将向整个dataarray添加后缀,但遵循相同的方法,我对其进行了一点修改,使其仅适用于数据集中的一个数组,例如,在问题中它将是:dataset[(fo)] =('x',np.char。添加(‘Pr'’,DataSet [ Foo')。Stasype(STR))很高兴为您工作。请考虑将答案标记为解决方案,以便其他人可以看到接受的解决方案。
dataset['foo'] = dataset['foo'].astype(str) + 'suffix'
UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U11'), dtype('<U11')) -> dtype('<U11')
Traceback (most recent call last):
File "<ipython-input-9-a74b1524f2e5>", line 1, in <module>
dataset['foo'] = dataset['foo'].astype(str) + 'suffix'
File "C:\ProgramData\Anaconda3\lib\site-packages\xarray\core\dataarray.py", line 1972, in func
if not reflexive
File "C:\ProgramData\Anaconda3\lib\site-packages\xarray\core\variable.py", line 1674, in func
if not reflexive
UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U11'), dtype('<U11')) -> dtype('<U11')
import xarray as xr
import numpy as np
da = xr.DataArray(['1', '2', '3'], [('x', [0, 1, 2])])
dataset = da.to_dataset(name="foo")
dataset['foo'] = ('x', np.char.add(dataset['foo'].astype(str) ,'suffix') )
dataset
>>>array(['1suffix', '2suffix', '3suffix'], dtype='<U7')