我试图读取列中的值,只有在满足特定条件时,才会从数据库文件(如MS Access文件)中使用这些值。
我有26个不同的MS访问文件,代表了26个不同年份的数据库。
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‘这样的条件。
因此,我想跳过那些不符合这些条件的年份,比如其他函数是否表示不满足的年份。
如果你有什么帮助或想法,我会非常感激的。
艾萨克
发布于 2017-10-26 05:49:25
您可以使用.empty属性:
In [11]: pd.DataFrame().empty # This DataFrame has no rows
Out[11]: True例如,跳过空的dataf:
if not dataf.empty:
D = list(dataf.values[0])
print(D)https://stackoverflow.com/questions/46946647
复制相似问题