2016-04-24 81 views
0

我是熊猫新手,并且已经通过拖拽的方式解决了这个问题的答案,但仍然无法使其工作 - 尽管看到了许多对该问题的引用。将熊猫数据框数据存储到python中的变量 - ValueError

我有一个数据帧包含两个移动平均列MA13和MA48。我想通过数据帧上的每一行从一个中减去另一个迭代和使用该结果来执行各种操作 - 按以下的代码:在df.iterrows()用于行

位置= 0 :

if (df['13MA'] > df['48MA'])and positions == 0: 
     positions==1 
     print('Buy') 
    elif (df['13MA'] <= df['48MA']) and positions==1: 
     positions==0 
     print('Sell') 

我不断收到错误:ValueError:一个Series的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

任何人都可以提出正确的代码,因为我努力想到如何引用数据帧向量?

许多THKS

+0

喜欢这个? 'df ['Result'] = np.where(df [(df ['positions'] == 0)&(df ['13MA']> df ['48MA'])],1,np.where(df [(df ['positions'] == 1)&(df ['13MA'] <= df ['48MA'])],0,-1))' – Jarad

回答

0

的问题可能是比较返回布尔值的系列,并以将错误指示真值是不明确的。例如

>import pandas as pd 
>df = pd.DataFrame({'13MA':[1,5,3],'48MA':[0,7,2]}) 
>df['13MA'] > df['48MA'] 
0 True 
1 False 
2 True 
dtype: bool 

if df['13MA'] > df['48MA']: 
    print("Hello") 

由于这是价值观,其中有些可能是真的还是假的数组,类将引发错误突出歧义

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

从您的文章看起来逻辑像这样可能会被矢量化,在这种情况下,你可以做一些像

>positions = df['13MA'] > df['48MA'] 
>positions = positions.apply(int) 
+0

这个反馈很多。只是设法通过改变iterrows语句来解决问题 - >对于索引,在df1.iterrows()中的行: – glen