Python 为什么';当遍历数据帧时,这个while循环是否会中断?

Python 为什么';当遍历数据帧时,这个while循环是否会中断?,python,pandas,while-loop,Python,Pandas,While Loop,当我运行代码时,它似乎在整个数据帧中迭代了两次,并且忽略了while条件 将熊猫作为pd导入 a=0 销售额=[ {'account':'Jones LLC','Jan':150','Feb':200','Mar':140}, {'account':'Alpha Co','Jan':200,'Feb':210,'Mar':215}, {'account':'Blue Inc','Jan':50,'Feb':90,'Mar':95}, {'account':'Blue Inc','Jan':50,

当我运行代码时,它似乎在整个数据帧中迭代了两次,并且忽略了while条件

将熊猫作为pd导入
a=0
销售额=[
{'account':'Jones LLC','Jan':150','Feb':200','Mar':140},
{'account':'Alpha Co','Jan':200,'Feb':210,'Mar':215},
{'account':'Blue Inc','Jan':50,'Feb':90,'Mar':95},
{'account':'Blue Inc','Jan':50,'Feb':90,'Mar':95},
{'account':'Blue Inc','Jan':50,'Feb':90,'Mar':95},
{'account':'Blue Inc','Jan':50,'Feb':90,'Mar':95}
]
df=pd.数据帧(销售)

a我想你想要的是,任务在第六排之后停止,对吗

那就是

a= 0
for index, row in df.iterrows():
    df.loc[index, 'a'] = a
    print(a, index)
    a += 1
    if a == 6:
        break

while
循环确实对您的情况有影响。循环体执行两次,这解释了a列中的值6…11。在
while
循环的第一次迭代中,a为零,因此它进入循环。由于内部循环没有限制,它只是在所有记录上循环,在每次迭代中增加
a
。如果df中正好有6条记录,它将以
a==6
退出,这意味着
while
循环将再次迭代。然后最后
a==12
,它终止,留下数据帧的值为6。。。11列中,哪些是while循环第二次迭代设置的值。

我想您想要的是,assignemt在第6行之后停止,对吗

那就是

a= 0
for index, row in df.iterrows():
    df.loc[index, 'a'] = a
    print(a, index)
    a += 1
    if a == 6:
        break
while
循环确实对您的情况有影响。循环体执行两次,这解释了a列中的值6…11。在
while
循环的第一次迭代中,a为零,因此它进入循环。由于内部循环没有限制,它只是在所有记录上循环,在每次迭代中增加
a
。如果df中正好有6条记录,它将以
a==6
退出,这意味着
while
循环将再次迭代。然后最后
a==12
,它终止,留下数据帧的值为6。。。11在a列中,是while循环第二次迭代设置的值。

使用:

a=0
for index, row in df.iterrows():
    df.loc[index, 'a'] = a
    print(a, index)
    a += 1
While循环是不必要的,因为对于stop,当列表中没有更多dict时。如果要使用while循环,则应使用使用:


While循环是不必要的,因为对于stop,当列表中没有更多dict时。如果您想使用while循环,那么您应该使用
iterrows
的速度非常慢,您能解释一下您在原始需求中试图做什么吗?您想要的输出是什么?或者您只是在探索使用
loc
循环吗?因为您可以使用避免使用循环的方法,因为循环需要一段时间才能完成。我有一个URL的数据帧,我正在尝试将服务器代码作为列附加。我希望将它保存在一个数据框中,因为它在Alteryx工作流中运行。我试图排除故障并限制迭代次数,但似乎忽略了while语句。
iterrows
非常慢,您能解释一下您在原始需求中试图做什么吗?您希望的输出是什么?或者您只是在探索使用
loc
循环吗?因为您可以使用避免使用循环的方法,因为循环需要一段时间才能完成。我有一个URL的数据帧,我正在尝试将服务器代码作为列附加。我希望将它保存在一个数据框中,因为它在Alteryx工作流中运行。我试图排除故障并限制迭代,但似乎忽略了while语句。明白了。我没有意识到内部循环会在不考虑父循环条件的情况下运行。这似乎是一个基本的概念,我没有,实际上是6。注意,
的循环体的第一次执行。。。iterrows()
a==0
开始,以
a==1
结束-正确。这不像是一个约束或什么的。while条件仅在需要进行另一次迭代时才进行评估。因此,如果到达循环体的末尾,或者执行了属于同一个循环的
continue
语句,就可以了。我没有意识到内部循环会在不考虑父循环条件的情况下运行。这似乎是一个基本的概念,我没有,实际上是6。注意,
的循环体的第一次执行。。。iterrows()
a==0
开始,以
a==1
结束-正确。这不像是一个约束或什么的。while条件仅在需要进行另一次迭代时才进行评估。因此,如果到达循环体的末尾,或者执行了属于同一循环的
continue
语句,那么我应该使用<6或其他数字。这就解释了为什么它会运行两次。我真正想让它做的是在不遍历整个dataframeYeah的情况下提前中断。我应该使用<6或其他数字。这就解释了为什么它会运行两次。我真正想让它做的是在不遍历整个数据帧的情况下提前中断