我正在做一个项目,用包含昨天日期的条件过滤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")