如何解决熊猫的迭代跳转到新的索引,行继续迭代
大事
我知道进行排序可能不是最好的方法,因此我也对其他想法持开放态度,但我真的很想知道如何执行以下操作:
说我有一个循环(循环!),循环通过相同的数据帧,当我结束第二个循环时,我想要索引,第一个循环的行从第二个循环结束的地方开始(即index = index2在下面的代码中)。这是我的示例代码:
from pandas import *
df = DataFrame(
{'to': ['spot1','spot2','spot3','spot4','spot1','spot5'],'from': ['Denver','Denver','Cleveland','Timbuktu']})`
for index,row in df.iterrows(): #iterate to find functions for measurement
value1 = row['from']
for index2,row2 in islice(df.iterrows(),index+1,None): #use islice to start on next row
value2 = row2['from']
if value1 != value2:
print('leaving from new destination)
index = index2 #start outside loop at location where inside loop finished (ie value1 = Cleveland on second outside iteration)
break #stop loop to prevent needless looping
elif value1 == value2:
print('still leaving from same destination)
解决方法
好吧,我想您只需要一个即可,例如:
import pandas as pd
df = pd.DataFrame(
{
'to': ['spot1','spot2','spot3','spot4','spot1','spot5'],'from':['Denver','Denver','Cleveland','Timbuktu']
}
)
current_idx = df.iloc[0].name # get first index
current_from = df.loc[current_idx,"from"]
for idx,row in df.iloc[1:].iterrows(): # Iter from the second row
if current_from == row["from"]:
print('still leaving from same destination')
else:
print('leaving from new destination')
current_idx = idx
current_from = row["from"]
老实说,您不需要保持索引hahah
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。