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

如何通过DuckDB Python API选择或别名含聚合函数的列

DuckDB Python API聚合列的引用与别名设置

一、直接引用带特殊名称的聚合列

当你通过aggregate生成sum(pnl)这类带特殊字符的列名时,直接用rel["sum(pnl)"]会报错,原因是DuckDB需要将这类列名识别为带引号的标识符。你可以通过以下两种方式正常引用:

  • 使用col()方法并传入带双引号的列名:
    # 获取sum(pnl)列
    pnl_col = rel.col('"sum(pnl)"')
    # 投影该列生成新关系
    rel_project = rel.project(pnl_col)
    
  • 在索引中使用转义的双引号(注意Python字符串内的转义写法):
    rel_project = rel['"sum(pnl)"']
    

二、聚合时直接设置列别名(推荐)

更简便的方式是在aggregate调用阶段直接给聚合列设置别名,后续就能用别名直接引用,无需处理特殊列名:

rel = duckdb.sql('select date, businessunit, pnl from tbl')
# 在aggregate语句中用as指定别名
rel = rel.aggregate('date, sum(pnl) as pnl_total')
# 直接通过别名引用列
pnl_total_rel = rel['pnl_total']

这样生成的关系里列名就是pnl_total,可以直接通过索引或col()方法正常引用,完全适配Python API的链式调用风格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:42:40