Python 蟒蛇熊猫返回';方法';对象不可下标

Python 蟒蛇熊猫返回';方法';对象不可下标,python,pandas,Python,Pandas,仍在学习python,却被这一条卡住了。我的脚本返回了一个“method”对象不可订阅“错误 数据帧:我有两列A和B,例如100行。ColumnA是一组1和0。ColumnB是一组值,可以沿行递增或递减 条件: 如果 ColA在过去9行中有一个1,ColB current row>ColB PREVICE row,然后new Cond4=True 埃尔塞夫 ColA在过去9行中有一个1,ColB current row>ColB PREVICE row,然后new Cond4=False 其他的

仍在学习python,却被这一条卡住了。我的脚本返回了一个“method”对象不可订阅“错误

数据帧:我有两列A和B,例如100行。ColumnA是一组1和0。ColumnB是一组值,可以沿行递增或递减

条件: 如果 ColA在过去9行中有一个1,ColB current row>ColB PREVICE row,然后new Cond4=True 埃尔塞夫 ColA在过去9行中有一个1,ColB current row>ColB PREVICE row,然后new Cond4=False 其他的 只要声明Cond4为真

Rational:ColA代表了一种罕见的结果,它并不总是发生,也不总是0。所以我需要Cond4返回TRUE。但是如果ColA中有一个事件(ColA=1),那么我需要检查接下来的9行,ColB是否大于前一行的ColB值

我需要构建两部分代码。首先是使用“条件检查器”构建df,该检查器用于对现有数据运行回溯测试

我使用下面的代码,它似乎可以工作

df.loc[(df['ColA'].rolling(27).sum() == 0), 'Cond4'] = True
df.loc[(df['ColA'].rolling(27).sum() >= 1) & (df.ColB > df.ColB.shift(1)), 'Cond4'] = True
df.loc[(df['ColA'].rolling(27).sum() >= 1) & (df.ColB < df.ColB.shift(1)), 'Cond4'] = False
df.loc[(df['ColA'].rolling(27.sum()==0),'Cond4']=True
df.loc[(df['ColA'].rolling(27.sum()>=1)和(df.ColB>df.ColB.shift(1)),'Cond4']=True
df.loc[(df['ColA'].rolling(27.sum()>=1)和(df.ColB
输出如下所示

第二部分是我遇到此“方法”对象不可下标错误的地方。代码的第二部分应该在新数据传递到脚本时实时运行此条件检查

下面是我完成这项工作的功能。条件1到3是我的其他条件检查

def check_condition_realtime(df):

cond1 = df.alpha[-1] > df.beta[-1]
cond2 = df.charlie[-1] > df.charlie[-2]
cond3 = df.charlie[-1] > df.alpha[-1]
if df.ColA.tail[-27].sum() == 0:
    cond4 = True
elif df.ColA.tail[-27].sum() >= 1 and df.ColB[-1] > candles.ColB[-2]:
    cond4 = True
elif df.ColA.tail[-27].sum() >= 1 and df.ColB[-1] < candles.ColB[-2]:
    cond4 = False
def check\u condition\u realtime(df):
cond1=df.alpha[-1]>df.beta[-1]
cond2=df.charlie[-1]>df.charlie[-2]
cond3=df.charlie[-1]>df.alpha[-1]
如果df.ColA.tail[-27].sum()==0:
cond4=真
elif df.ColA.tail[-27].sum()>=1和df.ColB[-1]>candicts.ColB[-2]:
cond4=真
elif df.ColA.tail[-27].sum()>=1和df.ColB[-1]<蜡烛.ColB[-2]:
cond4=假
请建议如何更正此错误


第二个问题,代码的第二部分,那些方括号,是熊猫编码方式的一部分吗?我一直在想,为什么我不必调用'df.loc',脚本自动知道获取df的最后一行。

dataframe.tail是一种方法。您不能像列表一样在其上使用
[]
。请参阅。使用
df.ColA.tail(-27).sum()方法
*facepalm,谢谢@JohnStrood