【发布时间】:2021-08-14 17:34:03
【问题描述】:
我首先使用 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)
非常感谢!
【问题讨论】:
-
使用
continue?喜欢if <your condition> is True: continue。 -
我已经尝试了很多不同的方法,但它似乎不起作用。根据一个列表中特定元素的数量是否与另一个列表的长度匹配,我在 pd.read 之后可能需要跳过的点之前有大约 200 行代码
-
我没听懂你。那么
continue没有按预期工作吗?或者您无法根据您的情况应用它?当你说你想跳过时,你想放弃在那之前你在那个循环中所做的一切并移动到下一个权利?也许编辑你的问题,详细说明你在做什么和你想要什么。 -
对不起,我会尝试更清楚一点,
continue按照您的建议使用时什么都不做,而且我对 Python 基本原理的了解不足以弄清楚为什么会这样(我是通过隧道视觉学习的熊猫专门帮助我解决之前没有编码经验的实验室研究的数据处理问题)。是的,您的理解是正确的,我希望它停止正在做的事情并继续下一个文件。我已经编辑了原始问题,希望现在更清楚了 -
我已经回复了。检查它现在是否有效。
标签: python pandas loops dynamic