【发布时间】:2019-02-23 13:57:59
【问题描述】:
我正在尝试从不断更新的数据框中比较值(都是浮点数)。
在这里,我将每个值从主要数据帧中分离出来:
if len(dfC) >= 3:
O = pd.DataFrame(dfO.tail(3))
O1 = (O.iloc[-1])
O2 = (O.iloc[-2])
O3 = (O.iloc[-3])
H = pd.DataFrame(dfH.tail(3))
H1 = (H.iloc[-1])
H2 = (H.iloc[-2])
H3 = (H.iloc[-3])
L = pd.DataFrame(dfL.tail(3))
L1 = (L.iloc[-1])
L2 = (L.iloc[-2])
L3 = (L.iloc[-3])
C = pd.DataFrame(dfC.tail(3))
C1 = (C.iloc[-1])
C2 = (C.iloc[-2])
C3 = (C.iloc[-3])
这是我试图将它们相互比较的地方:
if (O2 <= C3) & (L2 >= O3) & (L1 >= C2) & (C1 >= O2):
print("message")
elif (L2 >= C3) & (H2 <= O3) & (H1 <= C2) & (C1 <= O2):
print("message")
但是我得到“ValueError:只能比较标签相同的系列对象”。提前非常感谢,这让我现在很困惑!
【问题讨论】:
-
不看数据就很难说什么(你能分享样本吗?),但它可能想使用相同的索引。为什么需要将子集转换为数据框?您可以尝试使用
.values属性(例如df0.tail(3))仅获取值 -
@nocibambi 股票的数据是开盘价、最高价、最低价、收盘价。所以它们都是数字,即。像'3840.5'
-
在这种情况下,问题的根源似乎不是实际值的数据类型。相反,它是您尝试比较的子集的索引之间的差异。
-
好吧,从这些我仍然看不到索引 :) 您可能想要复制一些实际数据。由此看来,所有四个集合实际上都是同一个数据帧(除非发生了其他事情)。
-
抱歉,在我的第一条评论中,我的意思是
df0.tailp(3).values。