【发布时间】:2023-01-11 23:45:47
【问题描述】:
考虑到内部循环从 outer_row + 1 开始这一事实,我想对数据帧行执行嵌套循环。如果我使用
for o_index, o_row in df.iterrows():
L1 = o_row['Home']
L2 = o_row['Block']
for i_index, i_row in df.iterrows():
L3 = i_row['Home']
L4 = i_row['Block']
如您所见,在第一次迭代中,i_index 与 o_index 相同。但是,我希望 o_index 为 0,i_index 为 1。我该怎么做?
示例:假设这样的数据框:
Cycle Home Block
0 100 1 400
1 130 1 500
2 200 2 200
3 300 1 300
4 350 3 100
迭代应按以下顺序进行:
0 -> 1, 2, 3, 4
1 -> 2、3、4
2 -> 3, 4
3 -> 4
4 -> 没有
在每次内部迭代中,我将比较 L1 和 L3,如果它们相等,则计算 abs(L2-L4) 并将其推入列表。
【问题讨论】:
-
你到底想达到什么目的?几乎可以肯定的是,使用嵌套的
iterrows循环是错误的方法。请举出具体例子。 -
理想情况下,don't loop at all。你打算用这些价值观做什么?您可以使用
.shift()来偏移行并一次处理它们。 -
@mahmood 你现在能举个例子吗手术你会表演吗?
-
@mozway 请查看更新帖子。
-
@mahmood 我看过了,但你没有解释你在计算什么。可以向量化吗?