Python 3.x 按单元格值拉取excel数据:python

Python 3.x 按单元格值拉取excel数据:python,python-3.x,dataframe,Python 3.x,Dataframe,我对pandas还比较陌生,我正在尝试读取excel文件,并根据特定的单元格值将数据返回给我 我有一个excel工作簿,有几个表,表中的数据是这样显示的 LUID DATE & TIME IN S# - IN STATUS S# - OUT DATE & TIME OUT PTLZ191238 2021-02-21 S12345 LOADING (OUT) s123456 2021

我对pandas还比较陌生,我正在尝试读取excel文件,并根据特定的单元格值将数据返回给我

我有一个excel工作簿,有几个表,表中的数据是这样显示的

  LUID       DATE & TIME IN  S# - IN         STATUS      S# - OUT      DATE & TIME OUT
PTLZ191238    2021-02-21      S12345     LOADING (OUT)   s123456          2021-03-01
我已经能够遍历工作簿工作表了,现在我只想在DATE&TIME IN有值且DATE&TIME OUT为空时返回数据。 这是到目前为止我的代码

import pandas as pd

#main Tyr Workbook
xl_file = 'excel_workbook.xlsm'

worksheets
fwd = pd.read_excel(xl_file, sheet_name='sheet1`')
epes = pd.read_excel(xl_file,sheet_name='sheet2')
mvt = pd.read_excel(xl_file,sheet_name='sheet3')
ls = pd.read_excel(xl_file,sheet_name='sheet4')
knight = pd.read_excel(xl_file,sheet_name='sheet5')
hzl = pd.read_excel(xl_file,sheet_name='sheet6')
cfi = pd.read_excel(xl_file,sheet_name='sheet7')
hub = pd.read_excel(xl_file,sheet_name='sheet8')
eh = pd.read_excel(xl_file,sheet_name='sheet9')
ttl = pd.read_excel(xl_file,sheet_name='sheet10')

all_sheet = [fwd,epes,mvt,ls,knight,hzl,cfi,hub,eh,ttl]

for sheet in all_sheet:
    print(sheet.head(10))

我翻遍了文档,似乎找不到我的答案,非常感谢任何帮助

为了测试数据帧,pandas使用布尔索引。谓词可以是指定的值,也可以是针对空或NaN(“非数字”,pandas中的默认缺失值标记)的测试

最好用一个例子来说明:

工作表[工作表[“日期和时间”]=“2021-02-21”]

这里我们有dataframe、dataframe列、测试类型(相等)和我们测试的值

要测试导入的值是否丢失,
notna()
告诉我们它存在,并且
isna()
测试是否丢失

工作表[工作表[“日期和时间]。notna()

工作表[工作表[“日期和超时]。isna()

如果要测试多个子句,则必须将每个子句用括号括起来,并使用“&”表示
或“|”表示

sheet[(sheet[“DATE&TIME IN”].notna())和(sheet[“DATE&TIME OUT”].isna())]

数据帧有一个名为“empty”的属性,它将告诉您是否有任何数据

总而言之:

for sheet in all_sheet:
    # print(sheet.head(10))
    results = sheet[(sheet["DATE & TIME IN"].notna()) & 
                (sheet["DATE & TIME OUT"].isna())]
    if not results.empty:
        print(results.head(10))
请注意,如果您不想手动加载所有工作表,并且愿意将数据框名称保留为工作表名称,则可以通过将列表传递给pd.read_excel()或使用pd.ExcelFile()一步加载所有工作簿

all_sheet = pd.read_excel(xl_file, sheet_name=['sheet1', 'sheet2', 'sheet3', 'sheet4', 'sheet5', 'sheet6', 'sheet7', 'sheet8', 'sheet9', 'sheet10'])
all_sheet = []
for xls in pd.ExcelFile(xl_file):
    all_sheet.append(pd.ExcelFile.parse)