gpt4 book ai didi

python - 从sql查询中重新组合python中的时间列表

转载 作者:行者123 更新时间:2023-11-30 23:45:36 24 4
gpt4 key购买 nike

我想以小时为单位分割日期列表,并像平均值一样进行操作。我编写了一个调用 sqlite3 数据库的 python 程序,查询返回一个列表:

def SQLQueryDaily(currency,start,end):
#year = start[0,3]
c.execute('SELECT buy, sell FROM '+currency+' WHERE (datetime > "'+start+'" AND datetime < "'+end+'")')
for row in c:
print (row)

它打印:

('2002-01-02 01:33:57', 0.894)

('2002-01-02 01:33:58', 0.895)

('2002-01-02 01:33:59', 0.893)

以此类推数千行...

我想要做的是将这个列表重新分组为小时,并对返回的数字求平均值(此处:0.894)

老实说,我试图找到一种按小时或天重新组合结果的方法,但我不知道是否有正确的方法,请帮助,谢谢

最佳答案

该查询可以在sqlite中执行。按小时分组:

def SQLQueryDaily(currency,start,end):
sql = '''
SELECT buy, AVG(sell)
FROM {t}
WHERE (datetime > ? AND datetime < ?)
GROUP BY strftime('%Y-%m-%d %H',date)
'''.format(t = currency)
c.execute(sql, [start, end])
for row in c:
print (row)

按 15 分钟分组:

sql = '''
SELECT buy, AVG(sell)
FROM {t}
WHERE (datetime > ? AND datetime < ?)
GROUP BY strftime('%s', date)/(15*60)
'''.format(t = currency)

获取每组的第一行和最后一行:

sql = '''
SELECT f.date, f.sell, t.minp, t.maxp, t.avgp
FROM {t} f
INNER JOIN (
SELECT MIN(date) mindate, MAX(date) maxdate,
MIN(sell) minp, MAX(sell) maxp, AVG(sell) avgp
FROM {t}
GROUP BY strftime('%s', date)/(15*60)
) t
ON f.date = t.mindate or f.date = t.maxdate
'''.format(t = currency)

关于python - 从sql查询中重新组合python中的时间列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9436514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com