【问题标题】: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()