【发布时间】:2021-04-13 07:07:27
【问题描述】:
我有一个嵌套的 for 循环,但是它被忽略了,我不知道为什么。
import pandas as pd
import shutil
import os
import glob
source_dir = r'C:\Users\Ahmed_Abdelmuniem\Desktop\GLift'
target_dir = r'C:\Users\Ahmed_Abdelmuniem\Desktop\TAfternoon'
file_names = glob.glob(os.path.join(source_dir, '*.html'))
for file_name in file_names:
table = pd.read_html(file_name)
print ('tables found:', len(table))
for table in file_name:
filtered_table = [df for df in table if len(df) > 2]
for df in filtered_table:
comp = df.iat[1, 0]
if comp == 'SLS':
name = df.iat[0,0]
print (name)
输出如下:
:\Users\Ahmed_Abdelmuniem\AppData\Local\Programs\Python\Python39\python.exe "C:/Users/Ahmed_Abdelmuniem/PycharmProjects/File mover V2.0/main.py"
tables found: 73
tables found: 73
tables found: 71
tables found: 72
tables found: 123
tables found: 124
tables found: 123
tables found: 124
tables found: 123
tables found: 72
tables found: 72
tables found: 123
tables found: 121
tables found: 122
tables found: 119
tables found: 125
tables found: 124
tables found: 121
tables found: 121
tables found: 120
tables found: 122
tables found: 121
Process finished with exit code 0
如您所见,它只执行第一个 for 循环,而不是第二个,因为它不打印 name 变量。
编辑:为了澄清,我已经证明代码在不嵌套时可以工作。
这是单独工作以提取数据的代码,但是在嵌套时它不起作用。
import pandas as pd
import xlwt
from xlwt import Workbook
from openpyxl import load_workbook
fn = r'C:\Users\Ahmed_Abdelmuniem\PycharmProjects\Pandas Parser\Survey.xlsx'
file = r'C:\Users\Ahmed_Abdelmuniem\Desktop\XXX.html'
table = pd.read_html(file)
i=3
filtered_table = [df for df in table if len(df) > 2]
for df in filtered_table:
comp = df.iat[1,0]
if comp == 'SLS' :
name = df.iat[0,0]
print (name)
这是另一个代码的输出,表明那里确实有数据。
C:\Users\Ahmed_Abdelmuniem\AppData\Local\Programs\Python\Python39\python.exe "C:/Users/Ahmed_Abdelmuniem/PycharmProjects/Pandas Parser/main.py"
INW
SPL
Process finished with exit code 0
【问题讨论】:
-
在内循环中的打印语句之前需要满足几个条件。例如,
filtered_table必须至少有一项和comp == 'SLS'。你怎么知道内部循环没有运行而不是那些条件没有被满足? -
检查filtered_table列表是否有数据或者是否为空。之后检查是否有任何数据满足您的第二个 if 条件 (comp == 'SLS')
-
我已经检查过它是否在另一个代码中实现,我现在只是将单个代码组合成一个更大的代码。
标签: python python-3.x pandas