如何使用Python中的循环使用find函数过滤excel中的所有行



我正在做一个项目,用包含昨天日期的条件过滤Excel中的所有行,并将过滤后的带列名的行附加到新工作簿中。我试过到处找,但没能达到这个目的。这是输入文件:

Court # Received Date               column b      column c
502419/2020
01/30/2020                            xxx           xxx

这是我尝试过的代码:

import xlrd
sheet_data = []
wb = xlrd.open_workbook('path to input file')
sh = wb.sheet_by_index(0)
i = 0 
for i in range (sh.nrows):
if i != sh.row_values.str.find('02/25/2020'):
i += 1
else:
sheet_data.append(i)

产生的错误是"function"对象没有属性"str"。我把它改为包含产生相同结果的函数。

非常感谢您的帮助。谢谢大家!

我花了太长时间来想出一个解决方案。谷歌的结果相当糟糕,所有人都给出了相同的结果。你需要的是openpyxl。

import pandas as pd
from datetime import datetime, timedelta
# requires openpyxl, xlrd
file = 'FILENAME.xlsx'
df = pd.read_excel(file, index_col=None)
yest = datetime.today() - timedelta(days=1)
yest = yest.strftime('%m/%d/%y')
df2: pd.DataFrame = df[df['COLUMN A'].str.contains(yest)]
df2.to_excel('filtered.xlsx', index=False)

只需使用openpyxl,您就可以尝试以下操作:

import openpyxl
from datetime import datetime, timedelta
wb1 = openpyxl.load_workbook('Book1.xlsx')
wb2 = openpyxl.workbook.Workbook(write_only=True)
wb2.create_sheet('sheet1')
sh1 = wb1[wb1.sheetnames[0]]
sh2 = wb2['sheet1']
sh2.append(next(sh1.iter_rows()))
yest = (datetime.today() - timedelta(days=1)).strftime('%m/%d/%y')
for row in sh1.iter_rows():
if yest in row[0].value:
sh2.append((cell.value for cell in row))
wb2.save("filtered.xlsx")

最新更新