首页 > 解决方案 > 如果在遍历 pandas 中的多个文件时满足条件,如何跳过 for 循环迭代?

问题描述

我首先使用 os 和 glob 创建一个 CSV 列表,然后使用一个简单的 for 循环遍历应用我的代码的路径中的所有文件。

path = r'my path'
os.chdir(path)
FileList = glob.glob('*.csv')

for fname in FileList:
Session = pd.read_csv(fname, header = 3, usecols = [0, 1])
Session = Session[Session['System'].str.contains('Day', na=False)]
Session = Session['No System Name'].tolist()
CRFs = sum(["CRF" in x for x in Session])
...
df.to_csv(path + 'test_' + fname , index = 0)

如果 Session 的长度等于 CRF,有没有办法让循环跳过一个文件,循环将停止并使用 FileList 中的下一个文件重新开始?我尝试过使用 break 和 continue 来做这样的事情,但都没有做任何事情:

for fname in FileList:

Session = pd.read_csv(fname, header = 3, usecols = [0, 1])
Session = Session[Session['System'].str.contains('Day', na=False)]
Session = Session['No System Name'].tolist()
CRFs = sum(["CRF" in x for x in Session])
if CRFs == len(Session) is True: 
    continue(or break)
...
df.to_csv(path + 'test_' + fname , index = 0)

提前谢谢了!

标签: pythonpandasloopsdynamic

解决方案


而不是在您的代码中:

if CRFs == len(Session) is True: 
    continue

做就是了:

if CRFs == len(Session):
    continue

推荐阅读