如何迭代一个 df(itertuples),它可以基于熊猫中的前几行执行逻辑运算



有没有办法在itertuples((操作期间从前一行中提取值?

伪代码:

df=pd.DataFrame([[1,3,4],[5,6,7],[6,3,5],[7,4,23]])
for row in df.itertuples():
if (value of column[1] in [row -1 ])>(value of column[1] in row / 2):
do something

我知道有人可能会建议使用.diff().shift()进行矢量化操作,但我想知道如何通过 for 循环实现上述目标。

我会设置一个变量来跟踪上一行

prow = None
for row in df.itertuples():
if prow is None:
prow = row
else:
if prow[1] > row[1] / 2:
pass
# do something
prow = row

或者您可以将两个itertuples压缩在一起

for prow, row in zip(df.iloc[:-1].itertuples(), df.iloc[1:].itertuples()):
if prow[1] > row[1] / 2:
pass
# do something

最新更新