首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何遍历Python查询字符串中的日期范围并将结果追加到dataframe/csv

如何遍历Python查询字符串中的日期范围并将结果追加到dataframe/csv
EN

Stack Overflow用户
提问于 2019-01-04 22:08:11
回答 1查看 1K关注 0票数 0

我使用pymysql在python中连接到mysql数据库。我想对日期范围内的每一天运行查询,并将结果附加到数据帧中或直接导出到csv (无论哪种情况都能让我在一个地方获得数据)。

不一定要用熊猫来完成。

到目前为止,我已经尝试了:

代码语言:javascript
运行
复制
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()

或者,为日期尝试类似以下内容:

代码语言:javascript
运行
复制
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

我遇到的麻烦是把所有的东西都正确地拼接在一起,并让它工作。任何帮助都将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-01-04 22:21:31

尝试执行以下操作以查询数据库并以pandas.DataFrame形式返回结果集

代码语言:javascript
运行
复制
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),它将以字符串的形式返回列表元素,并以逗号分隔。请记住,您可能需要转换日期以匹配数据库中存在的任何日期格式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54040534

复制
相关文章

相似问题

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