首页 > 解决方案 > 在 Excel 中使用 Pandas (Python) 循环遍历多个工作表以返回列表中的值出现在列中的所有行

问题描述

我有一个值列表,如果它们出现在“书籍”列中,我希望返回该行。我想我已经用下面的代码实现了这一点:

def return_Row():
   file = 'TheFile.xls'
   df = pd.read_excel(file)
   listOfValues = ['A','B','C']
   return(df.loc[df['Column'].isin(listOfValues)])

目前这似乎只适用于第一个工作表,因为“TheFile.xls”中有多个工作表我将如何遍历这些工作表以返回在所有其他工作表的“书籍”列中找到 listOfValues 的任何行?

任何帮助将不胜感激。

谢谢

标签: pythonexcelpandas

解决方案


问题是,pd.read_excel()仅当您未指定sheet_name参数时才返回第一张工作表的数据框。如果要在不指定名称的情况下获取 excel 文件中的所有工作表,可以传递None如下sheet_name

df = pd.read_excel(file, sheet_name=None)

这将为每个工作表提供不同的数据框,您可以在其上循环并做任何您想做的事情。例如,您可以将所需的结果附加到列表并返回列表:

def return_Row():
   file = 'TheFile.xls'
   results = []
   dfs = pd.read_excel(file, sheet_name=None)
   listOfValues = ['A','B','C']
   for df in dfs.values():
       results.append(df.loc[df['Column'].isin(listOfValues)])
   return(results)

推荐阅读