Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用xarray中的名称索引设置值_Python_Xarray - Fatal编程技术网

Python 使用xarray中的名称索引设置值

Python 使用xarray中的名称索引设置值,python,xarray,Python,Xarray,我正在尝试使用xarray在熊猫面板上做的MA交叉 我正在使用的数据: <xarray.Dataset> Dimensions: (DATE: 3355, DN_NAME: 22670) Coordinates: * DATE (DATE) datetime64[ns] 2004-05-18 2004-05-19 2004-05-21 ... * DN_NAME (DN_NAME) object '17836' '1

我正在尝试使用xarray在熊猫面板上做的MA交叉

我正在使用的数据:

<xarray.Dataset>
Dimensions:          (DATE: 3355, DN_NAME: 22670)
Coordinates:
  * DATE             (DATE) datetime64[ns] 2004-05-18 2004-05-19 2004-05-21 ...
  * DN_NAME          (DN_NAME) object '17836' '1TIME' '4SIGHT' 'A-V-I' ...
Data variables:
    Unnamed: 0       (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    EXCHANGE         (DATE, DN_NAME) object nan nan nan nan nan nan nan nan ...
    CODE             (DATE, DN_NAME) object nan nan nan nan nan nan nan nan ...
    DNSECTOR         (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    EXCHANGE_SECTOR  (DATE, DN_NAME) object nan nan nan nan nan nan nan nan ...
    OPEN             (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    HIGH             (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    LOW              (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    CLOSE            (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    VOLUME           (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    OI               (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    DY               (DATE, DN_NAME) object nan nan nan nan nan nan nan nan ...
    EY               (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    VALUE            (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    DEALS            (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    BID              (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    OFFER            (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    CURRENCY         (DATE, DN_NAME) object nan nan nan nan nan nan nan nan ...
    ISSUED_SHARES    (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    FULL_NAME        (DATE, DN_NAME) object nan nan nan nan nan nan nan nan ...
    MA1              (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    MA2              (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    MA3              (DATE, DN_NAME) float64 nan nan nan nan nan nan nan nan ...
    MACROSS          int64 0
使用pandas面板的代码:

share_data['MACROSS'] = 0
#share_data['MACROSS'][(share_data['MA1'] <= share_data['MA2']) & 
(share_data['MA1'].shift(1) > share_data['MA2'].shift(1))] = -1
现在,在将面板转换为xarray后,我在xarray中尝试了以下操作:

ds['MACROSS'] = 0
ds['MACROSS'].sel(MA1 <= ds['MA2'], ds['MA1'].shift(1) > 
ds['MA2'].shift(1)) = 1
由于出现以下错误,我似乎无法使用sel索引设置值:

File "<ipython-input-50-af02cd233ed5>", line 17
     ds['MACROSS'].sel(ds['MA1'] > ds['MA2'], ds['MA1'].shift(1) <= 
     ds['MA2'].shift(1)) = 1

^
SyntaxError: can't assign to function call
知道如何在xarray中选择此子集,然后按预期设置值吗


谢谢

Xarray文档中有一节专门介绍并提供了以下警告:

使用任何索引方法isel或sel时,请勿尝试赋值

相反,您需要使用xarray对象来进行索引。大概是这样的:

date_inds = ...some subset of dates with DATE dimension...
name_inds = ...some subset of names with DN_NAME dimension...

ds['MACROSS'][date_inds, name_inds] = 1

这对我不起作用。我收到一个错误,说明我的日期索引无法使用,因为它没有整数数据类型:python无效索引器数组,没有整数数据类型:数组['2014-10-07T00:00:00.000000000','2014-10-18T00:00:00.000000000',