有没有办法在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