Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫索引器:单位置索引器是出界的,以奇怪的方式_Python_Python 2.7_Pandas - Fatal编程技术网

Python 熊猫索引器:单位置索引器是出界的,以奇怪的方式

Python 熊猫索引器:单位置索引器是出界的,以奇怪的方式,python,python-2.7,pandas,Python,Python 2.7,Pandas,嗨,我正在尝试以一种格式获取sql查询输出,以保持文件状态 我正在检查sql查询是否包含所有日期。如果不添加带有日期和零值的数据框,然后将它们合并为一个 df.iloc[0,1]打印值2018-07-02,但在签入if语句时,它返回错误“indexer-ror:single positional indexer-out-bounds”: 请帮忙 import ibm_db import ibm_db_dbi import datetime import panda

嗨,我正在尝试以一种格式获取sql查询输出,以保持文件状态

我正在检查sql查询是否包含所有日期。如果不添加带有日期和零值的数据框,然后将它们合并为一个

df.iloc[0,1]打印值2018-07-02,但在签入if语句时,它返回错误“indexer-ror:single positional indexer-out-bounds”:

请帮忙

    import ibm_db
    import ibm_db_dbi
    import datetime
    import pandas as pd

    con = ibm_db.pconnect("DATABASE=####;HOSTNAME=####;PORT=####;PROTOCOL=TCPIP;UID=#####;PWD=#######;","","")

    conn = ibm_db_dbi.Connection(con)

    today = datetime.date.today()

    today1 = today - datetime.timedelta(days = 1)

    today2 = today1 - datetime.timedelta(days = 1)

    today3 = today2 - datetime.timedelta(days = 1)

    today4 = today3 - datetime.timedelta(days = 1)

    today5 = today4 - datetime.timedelta(days = 1)


    DT1 = today5.strftime("%d-%b-%Y")

    DT2 = today4.strftime("%d-%b-%Y")

    DT3 = today3.strftime("%d-%b-%Y")

    DT4 = today2.strftime("%d-%b-%Y")

    DT5 = today1.strftime("%d-%b-%Y")

    sql1 = "select substr(load_date,0,10) load_date, count (distinct file_name) file_count, count(1) record_count from ###### where load_date  BETWEEN '" + today5.strftime("%Y-%m-%d") +" 00:00:00' and '" + today.strftime("%Y-%m-%d") + " 23:59:59' group by substr(load_date,0,10)  ORDER BY substr(load_date,0,10) WITH UR"

    df1 = pd.read_sql(sql1, conn)

    #print df1

    df1t = df1.T

    df = df1t

    #print df1t[0]

    #index_list = df1t[(df1t.iloc[0,0] == today2.strftime("%Y-%m-%d") )].index.tolist()

    #print today2.strftime("%Y-%m-%d")

    #print list(df1t)

    df1t.columns = df1t.iloc[0] 

    df1t = df1t.drop(df1t.index[0])

    df.rename(columns=df.iloc[0]).drop(df.index[0])

    #print df

    if df1t.iloc[0,0] != today5.strftime("%Y-%m-%d"):
        print("Mismatch Found For " + today5.strftime("%Y-%m-%d"))
        dfDT5 = pd.DataFrame([today5.strftime("%Y-%m-%d"),0,0], index=['LOAD_DATE', 'FILE_COUNT', 'RECORD_COUNT'])
        dfDT5.columns = [today5.strftime("%Y-%m-%d")]
        dfc = pd.concat([dfDT5, df], axis=1, sort=False)
        print "-------------------"
        print dfc
        #print dfDT5
        print "-------------------"
        #df1t.add(dfDT5, fill_value=0)
        print dfc.iloc[0,1]
        print "-------------------"
    if df1t.iloc[0,1] != today4.strftime("%Y-%m-%d"):
        print("Mismatch Found For " + today4.strftime("%Y-%m-%d"))
我得到的错误如下所示:

    Mismatch Found For 2018-06-27
    -------------------
                  2018-06-27  2018-07-02
    LOAD_DATE     2018-06-27  2018-07-02
    FILE_COUNT             0           2
    RECORD_COUNT           0     8100999
    -------------------
    2018-07-02
    -------------------
    Traceback (most recent call last):
      File ".\AIR_CS5.py", line 113, in <module>
        if df1t.iloc[0,1] != today4.strftime("%Y-%m-%d"):
      File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 1472, in __getitem__
        return self._getitem_tuple(key)
      File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 2013, in _getitem_tuple
        self._has_valid_tuple(tup)
      File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 222, in _has_valid_tuple
        self._validate_key(k, i)
      File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 1957, in _validate_key
        self._validate_integer(key, axis)
      File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 2009, in _validate_integer
        raise IndexError("single positional indexer is out-of-bounds")
    IndexError: single positional indexer is out-of-bounds
2018-06-27发现不匹配 ------------------- 2018-06-27 2018-07-02 装货日期2018-06-27 2018-07-02 文件\u计数0 2 记录计数0 8100999 ------------------- 2018-07-02 ------------------- 回溯(最近一次呼叫最后一次): 文件“\AIR\u CS5.py”,第113行,在 如果df1t.iloc[0,1]!=今天4.strftime(“%Y-%m-%d”): 文件“C:\Python27\lib\site packages\pandas\core\index.py”,第1472行,在\uu getitem中__ 返回self.\u getitem\u元组(键) 文件“C:\Python27\lib\site packages\pandas\core\index.py”,第2013行,在\u getitem\u元组中 self.\u具有有效的\u元组(tup) 文件“C:\Python27\lib\site packages\pandas\core\index.py”,第222行,在\u中有\u有效的\u元组 自我验证键(k,i) 文件“C:\Python27\lib\site packages\pandas\core\index.py”,第1957行,在_validate_key中 自我验证整数(键、轴) 文件“C:\Python27\lib\site packages\pandas\core\index.py”,第2009行,在\u validate\u integer中 提升索引器(“单位置索引器超出范围”) 索引器:单个位置索引器超出范围
您的数据帧
df1t
只有一列。因此,切片
df1t.iloc[0,1]
将因
索引器而失败

确保dataframe具有逻辑所需的数据,或者更改逻辑以适应数据


输出
2018-07-02
的行
print dfc.iloc[0,1]
,不代表
df1t
。事先打印
df1t
可能有助于查看您正在使用的内容。

我通过将dfc.iloc[0,1]存储在变量中找到了一个解决方法