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

2024-04-24 21:31:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,过滤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”。我将其更改为contains函数,该函数产生相同的结果

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


Tags: 文件项目函数目标datashcolumnexcel
1条回答
网友
1楼 · 发布于 2024-04-24 21:31:02

我花了太长时间才想出解决办法。谷歌的搜索结果很差,结果都一样。你需要的是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")

相关问题 更多 >