【问题标题】:Python - How to filter out data in ExcelPython - 如何在 Excel 中过滤掉数据
【发布时间】:2021-06-20 13:14:26
【问题描述】:

Excel 有一个选项卡,Sheet1(61 列和 20k 行),需要选择第 5 列(列名称为 Country)值“UK”和第 38 列(列名称为 Status)值“是”的所有行'。然后所有这些过滤的行都复制到新的 Sheet2。

【问题讨论】:

  • 请分享您的代码示例。问题出在哪里?

标签: python excel filter


【解决方案1】:

如果您以后不想在操作此文件时删除旧工作表,请使用此选项。 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()

【讨论】:

  • 非常感谢。
  • 嗨,我收到此错误:文件“”,第 2 行,在 filters_df = df[df['Country']=='UK ' & df['Status']=='Yes'] 文件“C:\Program Files\Anaconda3\lib\site-packages\pandas\core\ops.py”,第 1360 行,在包装器 res_values = na_op(self.值,其他)文件“C:\Program Files\Anaconda3\lib\site-packages\pandas\core\ops.py”,第 1326 行,在 na_op typ=type(y).__name__))类型错误:无法比较 dtyped [object] 数组,标量类型为 [bool]
  • 不用担心,我已经用括号“filtered_df = df[(df['Country']=='UK') & (df['Status']=='Yes') 对错误进行了排序]”。谢谢你。还有一个(最后一个)问题,如果我想在过滤器中应用 OR,例如 Status == Yes OR Maybe,我该怎么做?谢谢大家。
  • 使用 Or 符号,如下所示 |
【解决方案2】:

您可以使用 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

【讨论】:

  • 非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-26
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
  • 2021-08-18
相关资源
最近更新 更多