gpt4 book ai didi

python - 减少将 POStgreSQL 表引入具有 500000 行的 Pandas 的执行时间的替代方法?

转载 作者:行者123 更新时间:2023-11-29 14:35:46 24 4
gpt4 key购买 nike

我有一个包含 70 个表的 PostgreSQL 数据库,我希望访问其中一个名为“hub_psm_log_inter”的特定表。我想把它带到 Pandas 身上并对其进行一些操作。我正在访问的表的形状为 (500000, 23),将来可能会增加。 执行 psql.read_sql_query 大约需要 3 分钟。 我希望减少它花费的时间。 对我来说重要的行是 where (cust_hub_id = 358 & status_switch = 1). df_on 的形状只有 10000 行。

import numpy as np  
import pandas as pd

import psycopg2 as pg
import pandas.io.sql as psql

conn = pg.connect(
database = '',
user = '',
password = '',
host = '',
port = ''
)

df2 = psql.read_sql_query("SELECT * FROM hub_psm_log_inter", conn)


df4 = df2[df2.cust_hub_id == 358]
df4['status_switch'] = pd.to_numeric(df4['status_switch'], errors='coerce')
df_on = df4[df4.status_switch == 1]

最佳答案

在 SQL 查询中使用 WHERE 子句:

SELECT * FROM hub_psm_log_inter WHERE cust_hub_id = 358 AND status_switch = 1

从您的代码来看,status_switch 可能作为字符串存储在您的表中,因此您可能需要引用它,即

SELECT * FROM hub_psm_log_inter WHERE cust_hub_id = 358 AND status_switch = '1'

关于python - 减少将 POStgreSQL 表引入具有 500000 行的 Pandas 的执行时间的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44965150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com