2016-04-24 49 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