Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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 ValueError:数组条件必须与self的形状相同_Python_Pandas_Yahoo Finance - Fatal编程技术网

Python ValueError:数组条件必须与self的形状相同

Python ValueError:数组条件必须与self的形状相同,python,pandas,yahoo-finance,Python,Pandas,Yahoo Finance,我是《熊猫》中的超级无名小卒,我正在学习一个显然已经过时的教程 我有一个简单的脚本,当我运行时,我会得到一个错误: ValueError:数组条件必须与self的形状相同 从包中加载类数据 作为pd进口熊猫 从U数据读取器导入数据 将matplotlib.pyplot作为plt导入 形容词结束: 为公司行为调整股票价格的股票收盘价。 这个价格考虑了股票分割和股息。 调整后的收盘价是我们将在本例中使用的价格。 事实上,由于它考虑了拆分和股息,我们不需要手动调整价格。 第一天 开始日期='2014-

我是《熊猫》中的超级无名小卒,我正在学习一个显然已经过时的教程

我有一个简单的脚本,当我运行时,我会得到一个错误:

ValueError:数组条件必须与self的形状相同

从包中加载类数据 作为pd进口熊猫 从U数据读取器导入数据 将matplotlib.pyplot作为plt导入 形容词结束: 为公司行为调整股票价格的股票收盘价。 这个价格考虑了股票分割和股息。 调整后的收盘价是我们将在本例中使用的价格。 事实上,由于它考虑了拆分和股息,我们不需要手动调整价格。 第一天 开始日期='2014-01-01' 最后一天 结束日期='2018-01-01' 从类数据调用函数DataReader goog_data=data.DataReader'goog','yahoo',开始日期,结束日期 goog_data_signal=pd.DataFrameindex=goog_data.index goog_数据_信号['price']=goog_数据['Adj Close'] goog_数据_信号[‘每日差异’]=goog_数据_信号[‘价格’]。差异 goog_数据_信号['signal']=0.0 这一行产生错误 goog_数据_信号['signal']=pd.数据帧。其中goog_数据_信号['daily_difference']>0,1.0,0.0 goog_数据_信号['positions']=goog_数据_信号['signal'].差异 printgoog_数据_信号头 我试图通过实践来理解理论、图书馆和方法学,如果太明显,请容忍我……:]

where方法总是从数据帧调用,但是在这里,您只需要检查序列的条件,因此我找到了两种方法来解决此问题:

在本例中,新的where方法不支持为条件为true 1.0的行设置值,但仍然支持为false行设置一个值,该行称为中的另一个参数。因此,您可以在以后手动设置1.0,如下所示: 或者,您也可以按如下方式直接检查条件: 第二种方法为我生成输出:

price  daily_difference  signal  positions
Date                                                       
2014-01-02  554.481689               NaN       0        NaN
2014-01-03  550.436829         -4.044861       0        0.0
2014-01-06  556.573853          6.137024       1        1.0
2014-01-07  567.303589         10.729736       1        0.0
2014-01-08  568.484192          1.180603       1        0.0

在where方法的参数中,1.0和0.0代表什么?教程中说:我们将基于列的值,即daily_difference创建信号。如果该值为正值,我们将给出值1,否则,该值将保持为0熊猫数据读取器是否为您工作?我想这早就被弃用了。你可以试试。谢谢,它成功了。现在我必须详细了解代码的作用:]
goog_data_signal['signal'] = (goog_data_signal['daily_difference'] > 0).astype(int)
price  daily_difference  signal  positions
Date                                                       
2014-01-02  554.481689               NaN       0        NaN
2014-01-03  550.436829         -4.044861       0        0.0
2014-01-06  556.573853          6.137024       1        1.0
2014-01-07  567.303589         10.729736       1        0.0
2014-01-08  568.484192          1.180603       1        0.0