【发布时间】:2020-10-20 09:43:33
【问题描述】:
我面临以下问题。
我有一个数据框,其中包含:ID、日期、previous_date。
我还有一个存储在 SQL Server 数据库中的表,其中包含 ID、日期、值,我想实现以下目标:
在 db 表的数据框中搜索每个 ID,并在名为 desired_value 的新列中返回日期和上一个日期之间出现的值的总和。
起始数据帧
ID Date previous_date desired_value
5 15/3/2020 15/1/2020 16
7 25/6/2019 19/5/2019 8
数据库表
ID Date Value
5 13/1/2020 5
5 16/1/2020 7
5 17/2/2020 9
7 21/5/2019 4
7 17/6/2019 4
尽我所能,查询必须循环执行,对于起始数据帧的每一行。
我脑子里有这样的东西
my_query = "select ID, sum(Value) from db_table WHERE ID in {}".format(tuple(df['ID']))
但是如何在里面传递日期的参数呢?
或者这个
for index,row in left.iterrows():
x = cursor.execute('''
SELECT [ID], SUM([Value]) FROM db.table
WHERE Date > ? AND Date < ?
GROUP BY ID
''',row['Date'],row['previous_date']
)
但是 x 将是一个光标对象...
注意:Pandas 数据框和 db 表多次包含不同日期的相同 id(想象一下,就像每个 id 的订单)。
谢谢。
【问题讨论】:
-
嗨,欢迎来到 stackoverflow。请不要发布您预期结果的图片,图片只能在无法通过文字表达的情况下作为最后的手段。这样你会得到更多的帮助。其次,stackoverflow 不是“编写我的代码”/外包服务。如果您遇到问题或不了解某个特定方面,请对此进行解释。但是展示你已经尝试过的东西,然后人们可以帮助你。有关更多指针,请参阅此链接:How-to-ask
-
感谢您的反馈@DKramer。我删除了图像并用文字描述了问题。关于解决方案,我不清楚实现这一目标的最佳方法是什么,我只是觉得我必须遍历每一行的数据框。