Python中的IF和condition,检查ColA中过去的9行和ColB中的2行
需要有关设置python的IF和ELSE条件的帮助,该条件将生成具有布尔结果的新列 我有两组代码,我将它们解释为不同的python“方言”(我仍在学习python,仍然对两种不同的编码方式感到困惑) DF: 我有两列A和B,例如100行。ColumnA是一组1和0。ColumnB是一组值,可以沿行递增或递减 条件: 如果列A(ColA)在过去9行中有一个1,而列B(ColB)当前行>列B上一行,则new ColC=True。否则,请将ColC声明为True Rational 可乐代表了一种罕见的结果,它并不总是发生,也不总是0。所以我需要ColC返回TRUE。但是如果ColA中有一个事件(ColA=1),那么我需要检查接下来的9行,ColB是否大于前一行的ColB值 我尝试了以下方法,但得到了常见的布尔错误。 ValueError:序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all() 需要帮助设置正确的方法来编写此IF和ELSEPython中的IF和condition,检查ColA中过去的9行和ColB中的2行,python,pandas,Python,Pandas,需要有关设置python的IF和ELSE条件的帮助,该条件将生成具有布尔结果的新列 我有两组代码,我将它们解释为不同的python“方言”(我仍在学习python,仍然对两种不同的编码方式感到困惑) DF: 我有两列A和B,例如100行。ColumnA是一组1和0。ColumnB是一组值,可以沿行递增或递减 条件: 如果列A(ColA)在过去9行中有一个1,而列B(ColB)当前行>列B上一行,则new ColC=True。否则,请将ColC声明为True Rational 可乐代表了一种罕见的
if df.loc[:, ('ColA')].rolling(27).sum() >= 1:
df.loc[:, ('ColC')] = df.ColB > df.ColB.shift(1)
else:
df.loc[:, ('ColC')] = True
现在,进入“两种方言”问题。我有第一组代码我正在使用上述条件构建df,其中原始数据(close/open/pie/lamda/omega)正在通过条件检查运行,如下所示:
def BuildDataframeWithConditionsCheck(df):
df.loc[:, ('Col1')] = df.close > df.open
df.loc[:, ('Col2')] = df.pie > df.pie.shift(1)
df.loc[:, ('Col3')] = df.lamda > df.omega
df.loc[:, ('AllGood')] = df.loc[:, df.columns.str.startswith('Col')].all(axis=1)
return df
第二组代码是我检查包含原始数据(close/open/pie/lamda/omega)的df的地方。在操作中,这个df不断地接收新行,我使用下面的函数来检查最新的行
def checkconditions(df):
cond1 = df.close[-1] > df.open[-1]
cond2 = df.pie [-1] > df.pie [-2]
cond3 = df.lamda [-1] > df.omega[-1]
return all([cond1,cond2,cond3])
如何将ColB ColC IF ELSE和逻辑编码到第一组和第二组代码中
请告知