【问题标题】:How to do a select from table where values in a pandas series?如何从表中选择熊猫系列中的值?
【发布时间】:2020-06-24 02:08:09
【问题描述】:

例如:

>>> df['id']
>>> 1   2324
    2   4323
    3   4321
    4   1232
    n   ....
...
>>> query = client.query('''
SELECT *
FROM my_table
WHERE id IN (df['id']) 

''').to_dataframe() 

什么是我的熊猫系列的正确称呼?有可能吗?

提前致谢!

【问题讨论】:

    标签: python sql pandas google-bigquery


    【解决方案1】:

    您应该动态构建 SQL 语句的 IN 部分并生成 (2324, 4323...) 并将其附加到您的 SQL 语句中。

    如果您的 DataFrame 包含太多值,您可以在 SQL 服务器端创建一个临时表,将 DataFrame 中的值插入到该临时表中,然后进行常规连接。

    【讨论】:

      【解决方案2】:

      您应该使用join 创建一个 id 列表和 f-string 以将该列表插入到查询中:

      all_ids = df['id'].astype(str).agg(','.join)
      query = client.query(f'''
      SELECT *
        FROM my_table
       WHERE id IN ({all_ids})
      ''').to_dataframe()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-17
        • 2018-06-25
        • 2020-05-10
        • 2016-05-28
        • 2020-05-01
        • 2013-08-19
        • 2021-12-05
        相关资源
        最近更新 更多