从表中选择数据并与数据框进行比较

时间:2019-01-31 10:51:32

标签: python sql pandas dataframe amazon-redshift

我有一个这样的数据框

Name  age   city
John   31   London
Pierre 35   Paris
...
Kasparov 40 NYC

我想使用sql从redshift城市表中选择数据,其中城市包含在数据框的城市中

query = select * from city where ....

您能帮我完成此查询吗?

谢谢

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

unique_cities = df['city'].unique()


# sql query
select * from city where name in unique_cities

答案 1 :(得分:0)

杰里尔的答案是正确的方向,但还不完整。 df.unique()结果不是一个字符串,而是一个系列。您的where子句中需要一个字符串

# create a string for cities to use in sql, the way sql expects the string
unique_cities = ','.join("'{0}'".format(c) for c in list(df['city'].unique()))

# output 
'London','Paris'

#sql query would be
query = f"select * from city where name in ({unique_cities})"

上面的代码假设您正在使用python 3.x

请告诉我这是否可以解决您的问题