簡體   English   中英

如何遍歷 Python 查詢字符串中的日期范圍並將結果附加到數據框/csv

[英]How to loop through a date range in Python query string and append results to a dataframe/csv

我正在使用 pymysql 連接到 python 中的 mysql 數據庫。 我想在日期范圍內的每一天運行查詢並將結果附加到數據框中或直接導出到 csv(以在一個地方獲取數據為准)。

不一定必須使用熊貓來完成。

到目前為止我嘗試過的:

import pandas as pd
import pymysql

from datetime import date
dates = [
    date(year=2016, month=1, day=12), 
    date(year=2016, month=1, day=13),
    date(year=2016, month=1, day=14),
]

conn = pymysql.connect(...)
cursor = conn.cursor()

frame = []
for date in dates:
    query = """SELECT * FROM table WHERE date = {date}""".format(date=date)
    cursor.execute(query)
    data = cursor.fetchall()
    df = pd.DataFrame(list(data))
    frame.append(df)
conn.close()

或者嘗試類似以下的日期:

from datetime import date, timedelta

start = date(2015, 9, 9)
end = date.today()
week = timedelta(days=7)

mydate = start
while mydate < end:
    print("{date.day:02}{date.month:02}{date.year}".format(date=mydate))
    mydate += week

我遇到的問題是將所有內容正確地拼湊在一起並使其工作......任何幫助將不勝感激。 謝謝

嘗試以下操作來查詢您的數據庫並將結果集作為pandas.DataFrame

import pandas as pd
import pymysql

from datetime import date

dates = [
    date(year=2016, month=1, day=12), 
    date(year=2016, month=1, day=13),
    date(year=2016, month=1, day=14),
]

conn = pymysql.connect(...)

query = """SELECT * FROM table WHERE date IN ({})""".format(','.join(dates))

df = pd.read_sql(query, con=conn)

conn.close()

pandas有一個內置的方法來利用你的數據庫連接來執行和返回作為pd.DataFrame結構的查詢。 然后您可以運行df.to_csv來導出您的結果。 query變量中,請記住它是一個str類型,因此在 python 的幫助下正確格式化查詢是一個問題,這就是我們使用的','.join(dates)將返回列表元素字符串,以逗號分隔。 請記住,您可能需要轉換日期以匹配數據庫中存在的任何日期格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM