当前位置: 首页 > 面试题库 >

带有参数的熊猫read_sql

郁光熙
2023-03-14
问题内容

是否有任何示例说明如何在Pandas中通过SQL查询传递参数?

特别是我正在使用SQLAlchemy引擎连接到PostgreSQL数据库。到目前为止,我发现以下工作原理:

df = psql.read_sql(('select "Timestamp","Value" from "MyTable" '
                     'where "Timestamp" BETWEEN %s AND %s'),
                   db,params=[datetime(2014,6,24,16,0),datetime(2014,6,24,17,0)],
                   index_col=['Timestamp'])

Pandas文档说,params也可以作为dict传递,但是例如,我似乎无法通过尝试使它起作用:

df = psql.read_sql(('select "Timestamp","Value" from "MyTable" '
                     'where "Timestamp" BETWEEN :dstart AND :dfinish'),
                   db,params={"dstart":datetime(2014,6,24,16,0),"dfinish":datetime(2014,6,24,17,0)},
                   index_col=['Timestamp'])

建议从熊猫运行这些类型的查询的方法是什么?


问题答案:

read_sql文件说这个params参数可以是一个列表,元组或字典(见文档)。

通过在SQL查询中的值,也有不同的语法可能的:?:1:name%s%(name)s(见PEP249)。
但是并非所有数据库驱动程序都支持所有这些可能性,支持 哪种语法取决于您使用的驱动程序psycopg2我想是您的情况)。

在第二种情况下,使用字典时,您使用的是“命名参数”,根据psycopg2文档,它们支持%(name)s样式(因此:name我不支持),请参阅http://initd.org/psycopg/docs/
usage.html#query-parameters

因此,使用该样式应该可以:

df = psql.read_sql(('select "Timestamp","Value" from "MyTable" '
                     'where "Timestamp" BETWEEN %(dstart)s AND %(dfinish)s'),
                   db,params={"dstart":datetime(2014,6,24,16,0),"dfinish":datetime(2014,6,24,17,0)},
                   index_col=['Timestamp'])


 类似资料:
  • 我在用Pandas将。txt文件转换为浮动值的数据目录时遇到了麻烦。我需要创建两列数据的散点图,但我一直得到错误“TypeError:Empty'DataFrame':no numeric data to plot”,所以我认为它是以字符串的形式读取数据。 下面是我运行df.info时得到的结果 列u_Vmag和u_B-V中没有任何测量值。 我觉得我只是错过了一些显而易见的东西。有人有什么建议吗?

  • 问题内容: 在下面,male_trips是一个大熊猫数据帧,station是一个小熊猫数据帧。对于每个车站ID,我想知道有多少次男性旅行。以下工作可以完成,但是需要很长时间: 我应该怎么做呢? 更新!因此,有两种主要方法:其次是和更简单的方法。我很快完成了,这种方法大获全胜!这是代码: 结果如下: 请注意,以这种速度,用于探索数据 键入 value_counts的速度稍微快一些,而且记不起来了!

  • 问题内容: 我有一个熊猫系列,目前看起来像这样: 我想从根本上将其重塑成一个看起来像这样的数据框… 即。逻辑构造,指出每个观察(行)属于哪个类别。 我能够编写基于循环的代码来解决该问题,但是鉴于我需要处理的行数众多,这将非常缓慢。 有谁知道针对这种问题的矢量化解决方案?我将不胜感激。 编辑:有509个类别,我确实有一个清单。 问题答案:

  • 我必须根据以下col1、col2和loc的数据进行分组,并计算col3中的项数。此外,还应考虑开始和结束日期,即日期应在2021 1月1日至2021 1月31日之间。最终结果应显示在col4中。 数据 预期输出

  • 问题内容: 我正在尝试采用一个数据框并将其转换为特定的json格式。 这是我的数据框示例: 这是我想转换成的json格式: 注意这是字典列表。我几乎在下面的代码中: 但是,该行还包含这样的索引: 请注意,这是一个字典,它还包含两次索引(在第一个字典中为索引,在第二个字典中为“ id”!对您有所帮助。 问题答案: 您可以使用

  • 我有一个熊猫数据框,如下所示,具有多个列,并希望获得列的总数。 我的尝试: 我试图使用和获取列的总和: 这会导致以下错误: 预期产出 我预计产出如下: 或者,我希望编辑< code>df,在标题为< code>TOTAL的新行中包含总计: