You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更高效合并两个SQL查询的Pandas DataFrame?或用单SQL实现

问题:用单条SQL查询替代两次查询合并的高效方案?

我需要从SQL数据库的两张表中获取数据:从my_table提取指定时间范围的业务数据,从config表提取对应每一列数据的单位(单位与数据列是1:1对应)。

目前我通过两次查询再合并的方式实现了需求:先查询业务数据得到DataFrame,再查询单位信息并转置为行,最后将单位行与数据行合并,得到单位行在前、数据行在后的结果(示例见下方)。但我希望找到更高效的处理方式,尤其是能否直接通过单条SQL查询生成目标DataFrame?


当前实现代码:

import pandas as pd
import pyodbc

# 连接数据库
conn = pyodbc.connect('<connection info here>')

# 查询'my_table'中指定时间范围内的所有数据
query_data = "SELECT * FROM my_table WHERE timestamp BETWEEN '2024/10/24 11:00:00' AND '2024/10/24 12:00:00'"
# 查询'config'表中'my_table'对应项的单位
query_units = "SELECT units FROM config WHERE t_name=my_table"

# 获取包含请求数据的DataFrame
df = pd.read_sql_query(query_data, conn, 'timestamp')
# 获取每个数据项的单位DataFrame,因返回单列故转置为行(以数据列名为索引)
eu = pd.read_sql_query(query_units, conn, index=df.columns).T

# 合并单位行与数据行,按df.columns(数据值名称)对齐
df = pd.concat(objs=(eu, df))

示例输出结果(当前代码执行正确):

data1    data2    data3    ...    dataN
units  volts    amps     temp     ...    volts  (这是插入的单位行)
11:00  10       5        69       ...    9
11:30  11       5        70       ...    10
12:00  12       6        72       ...    9

内容的提问来源于stack exchange,提问作者JRiggles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:15:16