我是Pandas的新手,已经在此处搜索了stackoverflow以获得答案,但仍然无法使其正常工作 - 尽管看到很多人提到这个问题。
我有一个包含两个移动平均列MA13和MA48的数据帧。我希望迭代数据帧,从每行中减去一个,并使用结果执行各种操作 - 根据下面的代码:
位置= 0 对于df.iterrows()中的行:
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:系列的真值是不明确的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
是否有人能够建议正确的代码,因为我正在努力思考如何引用数据帧向量?
很多人
答案 0 :(得分: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")
由于这是值上的数组,其中一些可能是True或False,因此该类会抛出错误以突出显示歧义
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)