首页 > 解决方案 > 使用 SQL 服务器连接对日期进行 Python 行迭代。迭代python数据框中的多列

问题描述

我有一个带有主索引和两个日期列的数据框。我正在使用主索引从 SQL 服务器检索数据,检索到的数据具有美元值和日期。

初始数据框看起来

Primary_index   Issue_date    Experience_date
abc101          08/01/2018    08/01/2020
abc102          02/01/2018    02/01/2020
abc103          04/13/2017    04/13/2018
abc104          07/27/2019    07/27/2020

SQL数据是这个

Primary_index   Paid_date     Amount
    abc101      07/01/2017    $50
    abc102      02/13/2018    $100
    abc101      05/23/2019    $500
    abc104      07/02/2020    $175
    abc104      09/02/2017    $175

我需要迭代 Primary_index 以及 Issue_date 和 Experience_date,以确保 Paid_date 在 Issue_date 和 Experience_date 之间。

我正在迭代主索引,如下所示

df['Primary_Index'] = df['Primary_Index'].astype(str).str.strip()   
Primary_list = df['Primary_Index'].apply(lambda x: "'{}'".format(x)).tolist()   
list_split = [Primary_list [x:x+10000] for x in range(0, len(Primary_list), 10000)]  
filter_list = []
for list in list_split:
    filter_list.append(','.join(list)) 
df_final = pd.DataFrame()
for i in filter_list:
    sql="""
    SELECT
       DB.tbl.Primary_Index,
       DB.tbl.Paid_date
    FROM
       DB.tbl
    WHERE
      DB.tbl.Primary_Index IN ("""+i+""")
      AND
      DB.tbl.Paid_date  BETWEEN  '2017-01-02 00:00:00'  AND  '2020-06-30 00:00:00'
    Group by
      DB.tbl.Primary_Index,
      DB.tbl.Paid_date
    """
    df_final = df_final.append(pd.read_sql(sql,con))

问题是我已经硬编码了返回数百万行的最小和最大付费日期。有没有办法迭代初始数据框中的日期以及primary_index?

标签: pythondataframedateiterationrows

解决方案


推荐阅读