【发布时间】:2021-06-20 13:14:26
【问题描述】:
Excel 有一个选项卡,Sheet1(61 列和 20k 行),需要选择第 5 列(列名称为 Country)值“UK”和第 38 列(列名称为 Status)值“是”的所有行'。然后所有这些过滤的行都复制到新的 Sheet2。
【问题讨论】:
-
请分享您的代码示例。问题出在哪里?
Excel 有一个选项卡,Sheet1(61 列和 20k 行),需要选择第 5 列(列名称为 Country)值“UK”和第 38 列(列名称为 Status)值“是”的所有行'。然后所有这些过滤的行都复制到新的 Sheet2。
【问题讨论】:
如果您以后不想在操作此文件时删除旧工作表,请使用此选项。 Pandas 是一个 Python 库,可帮助您(但不限于)玩转 excel 和 csv。
import pandas as pd
from openpyxl import load_workbook
df = pd.read_excel('Path/to/folder/filename.xlsx')
filtered_df = df[df['Country']=='UK' & df['Status']=='Yes']
book = load_workbook('Path/to/folder/filename.xlsx')
writer = pd.ExcelWriter('Path/to/folder/filename.xlsx', engine = 'openpyxl')
writer.book = book
filtered_df.to_excel(writer, sheet_name = 'sheet2')
writer.save()
writer.close()
【讨论】:
您可以使用 Pandas 完成所有这些工作。首先您阅读您的 excel 文件,然后过滤数据框并保存到新工作表中
import pandas as pd
df = pd.read_excel('file.xlsx', sheet_name=0) #reads the first sheet of your excel file
df = df[(df['Country']=='UK') & (df['Status']=='Yes')] #Filtering dataframe
df.to_excel('file.xlsx', sheet_name='Filtered Data') #Saving to a new sheet called Filtered Data
【讨论】: