首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pandas.read_sql条件跳过文件

使用pandas.read_sql条件跳过文件
EN

Stack Overflow用户
提问于 2017-10-26 05:44:02
回答 1查看 177关注 0票数 1

我试图读取列中的值,只有在满足特定条件时,才会从数据库文件(如MS Access文件)中使用这些值。

我有26个不同的MS访问文件,代表了26个不同年份的数据库。

代码语言:javascript
复制
import pyodbc
import pandas as pd
import numpy as np
k = 1993 + np.arange(24)

for i in k:
    print(i)
    DBfile = r'D:\PMIS1993_2016'+'\\'+str(i)+'\\pmismzxpdata_'+str(i)+'.mdb'
    print(DBfile)
    conn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ='+DBfile)
    cur = conn.cursor()
    qry = "SELECT JCP_FAILED_JNTS_CRACKS_QTY, JCP_FAILURES_QTY, JCP_SHATTERED_SLABS_QTY, JCP_LONGITUDE_CRACKS_QTY, JCP_PCC_PATCHES_QTY FROM PMIS_JCP_RATINGS WHERE BEG_REF_MARKER_NBR = '0342' and BEG_REF_MARKER_DISP LIKE '0.5' and RATING_CYCLE_CODE = 'P'"
    dataf = pd.read_sql(qry, conn)
    print(dataf)
    D = list(dataf.values[0])
    print(D)

    conn.close()

在这里,我尝试读取JCP_FAILED_JNTS_CRACKS_QTY,JCP_FAILURES_QTY,JCP_SHATTERED_SLABS_QTY和JCP_LONGITUDE_CRACKS_QTY,JCP_PCC_PATCHES_QTY变量的值,当BEG_REF_MARKER_NBR = '0342‘和BEG_REF_MARKER_DISP = '0.5’和RATING_CYCLE_CODE = 'P‘时。

然而,并不是每年都能满足BEG_REF_MARKER_NBR = '0342‘和BEG_REF_MARKER_DISP = '0.5’和RATING_CYCLE_CODE = 'P‘这样的条件。

因此,我想跳过那些不符合这些条件的年份,比如其他函数是否表示不满足的年份。

如果你有什么帮助或想法,我会非常感激的。

艾萨克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-26 05:49:25

您可以使用.empty属性:

代码语言:javascript
复制
In [11]: pd.DataFrame().empty  # This DataFrame has no rows
Out[11]: True

例如,跳过空的dataf

代码语言:javascript
复制
if not dataf.empty:
    D = list(dataf.values[0])
    print(D)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46946647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档