Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更快地从pandas查询到postgresql_Python_Sql_Pandas_Postgresql - Fatal编程技术网

Python 如何更快地从pandas查询到postgresql

Python 如何更快地从pandas查询到postgresql,python,sql,pandas,postgresql,Python,Sql,Pandas,Postgresql,我有一个CSV文件,我必须搜索数据库中是否有行。 例如,从我的CSV中,我必须使用姓名、姓氏和生日在DB中查找大学名称。 例如: 从这个图像示例中,我应该发现XXX YYY在大学1学习,AAA BBB在大学2学习,TTT YYY没有结果 我的解决方案是跟随,这是非常缓慢的。CSV文件有50k行和40M数据库 我使用PythonPandas,读取CSV文件,然后创建一个新的列,包含姓名、姓氏和生日。来自新联合收割机列的示例数据:“XXX+YYYY+29-05-1953” 然后,我从新的comb

我有一个CSV文件,我必须搜索数据库中是否有行。 例如,从我的CSV中,我必须使用姓名、姓氏和生日在DB中查找大学名称。 例如:

从这个图像示例中,我应该发现XXX YYY在大学1学习,AAA BBB在大学2学习,TTT YYY没有结果

我的解决方案是跟随,这是非常缓慢的。CSV文件有50k行和40M数据库

我使用PythonPandas,读取CSV文件,然后创建一个新的列,包含姓名、姓氏和生日。来自新联合收割机列的示例数据:“XXX+YYYY+29-05-1953”

然后,我从新的combine列中获取所有可能数据的列表。 假设列表为:
combine\u list=data[new\u column].tolist()

现在我提出了一个惊人的问题:))


您能告诉我如何更快地找到它们吗?

您可以将列作为元组查询:

选择concat(姓名“+”,姓氏“+”,出生日期)作为大学的新列
从db_表
其中(('XXX','YYY','29-05-53')中的(姓名,姓氏,出生日期),
('AAA','BBB','01-01-1997'),…)
这应该比查询连接的值更快,尤其是当
WHERE
子句中的列上有索引时

query = Select concat(name ,'+',surname,'+',birthdate) as new_column, university
        from db_table where name is not NULL and surname is not NULL and birthdate is not NULL
        and concat(name ,'+',surname,'+',birthdate) in {tuple(combine_list)}"