如何通过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
相关产品推荐
相关产品推荐

