我有一个包含大量行的MS SQL服务器(大约400万),我还可以在给定的时间范围内得到我的网站所有访问者的电话号码列表,我可以将其转换为csv文件,然后转换为python中的 Dataframe 。我想做的是从我的服务器中选择两列(一个是电话号码,另一个是那个人的属性)但是我只想从同时存在于我的数据框和服务器中的人中选择这个记录。我目前所做的是从sql server中选择所有客户,然后将它们与我的数据框合并。但显然这不是很快,有没有办法做得更快?
query2 = """
SELECT encrypt_phone, col2
FROM DatabaseTable
"""
cursor.execute(query2)
tables = cursor.fetchall()
df2 = pd.DataFrame.from_records(tables, columns=[x[0] for x in cursor.description])
df1.merge(df2, how='inner', indicator=True)
1条答案
按热度按时间jv4diomz1#
如果您的 DataFrame 没有太多行,我会用here这样简单的方法:
注意:
colx
和coly
分别是panda DataFrame和SQL表中引用客户(id或name,..)的列。否则,您可能需要将
df1
存储为DB中的表,然后执行sub-query: