将pandas数据帧数据存储到python中的变量 - ValueError

时间:2016-04-24 03:16:22

标签: python pandas

我是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()。

是否有人能够建议正确的代码,因为我正在努力思考如何引用数据帧向量?

很多人

1 个答案:

答案 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)