Python 3.x 按单元格值拉取excel数据:python
我对pandas还比较陌生,我正在尝试读取excel文件,并根据特定的单元格值将数据返回给我 我有一个excel工作簿,有几个表,表中的数据是这样显示的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
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)