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

如何通过SASPY的to_df()函数筛选从SAS服务器传输的数据?

在SASPY中传输数据前筛选数据的实现方案

直接通过to_df()的**kwargs传递筛选条件

SASPY的to_df()方法支持通过where参数传入SAS风格的筛选表达式,这个条件会在SAS服务器端先执行,只把符合要求的数据传输到本地Pandas,从源头减少数据量。

示例代码:

import saspy

# 初始化SAS连接
sas = saspy.SASsession()

# 关联目标SAS数据集
sas_table = sas.sasdata('目标表名', libref='库名')

# 传入where参数筛选后转成DataFrame
filtered_df = sas_table.to_df(where="年龄 > 30 AND 性别 = '女'")

这里的where值完全遵循SAS的逻辑语法,比如字符型值要用单引号包裹,逻辑运算符用AND/OR等。

复杂场景:先在SAS端生成筛选后的临时表

如果需要更复杂的数据处理(比如多表关联、聚合计算后再筛选),可以先在SAS服务器端用PROC SQL或DATA步生成临时数据集,再将这个轻量化的临时表转成DataFrame。

示例代码:

# 在SAS端执行PROC SQL生成筛选后的临时表
sas.submit("""
    PROC SQL;
        CREATE TABLE work.temp_filtered AS
        SELECT 姓名, 年龄, 薪资
        FROM 库名.目标表名
        WHERE 薪资 > 10000 AND 部门 = '技术部';
    QUIT;
""")

# 将临时表转为Pandas DataFrame
result_df = sas.sasdata('temp_filtered', libref='work').to_df()

关于**kwargs的更多用法

除了where,你还可以通过keep/drop参数指定只保留或排除特定列,进一步压缩传输的数据体积:

# 只保留指定列+行筛选
target_df = sas_table.to_df(where="入职日期 > '01JAN2020'd", keep="姓名 部门 薪资")

内容的提问来源于stack exchange,提问作者FábioRB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:55:31