将 SAS table 转换为 Python 数据帧时如何在 SASPy 中指定 LIBREF

How to specify LIBREF in SASPy when turning a SAS table into a Python Dataframe

请参阅下图了解我的 SAS 服务器布局。我想拉出顶部 table 2020_01_SETTLEMENTS 并将其放入 Python 数据框中。我已成功在 Python 和 SAS 服务器之间建立连接。我在下面有以下代码,但我相信我出错的地方是 sasdata2dataframe 函数的 LIBREF 部分。我也在下面列出了错误消息。非常感谢任何能告诉我哪里出错的人。我还在此处将引用 material 链接到此函数:

https://sassoftware.github.io/saspy/api.html

代码:

import saspy
import pandas as pd
from IPython.display import HTML

sas = saspy.SASsession(cfgfile=r'C:\Users\P1\Python_Code\sascfg_personal.py')

sasdata2dataframe(table: str = '2020_01_SETTLEMENTS', libref: str = 'BANKMKR', dsopts: dict = None, method: str = 'MEMORY')

错误信息:

 File "<ipython-input-18-41bb6a0902ac>", line 1
    sasdata2dataframe(table: '2020_01_SETTLEMENTS', libref: str = 'BANKMKR', dsopts: dict = None, method: str = 'MEMORY')
                           ^
SyntaxError: invalid syntax

尽管手册中没有具体说明,但我最终还是使用了以下代码,并且它起作用了。我刚刚将 table: str = '2020_01_SETTLEMENTS' 更改为 table='2020_01_SETTLEMENTS'

tempTable = sas.sasdata2dataframe(table='2020_01_SETTLEMENTS', libref='BANKMKR')

我今天才看到这个,我想我会阐明我在这条赛道上看到的东西。而且,我正在努力提供帮助,而不是混蛋,所以请这样阅读(我是这样写的)。这里的问题只是对语言的熟悉程度; python 在这种情况下。 API 文档是一个 auto-generated 部分,基于代码本身;方法定义和 doc-strings。因此,显示的方法是定义(签名),而不是如何调用它们的示例。这可能会或可能不会帮助,但这里是函数(方法)定义的文档:https://docs.python.org/3.5/reference/compound_stmts.html#function-definitions

例如,在 C 中,您可以将函数定义为

int max(int num1, int num2) { … },

但这不是如何从源代码中调用它的示例;这是一个函数定义,它告诉您调用它所需了解的一切。如果您尝试将定义编码为对它的调用,您会从编译器中得到一个语法错误,与 python 试图在函数调用中编码 a : 而不是 = 时出现的语法错误相同。

value = int max(int 3, int 5);

是语法错误。调用该函数的正确方法是

值 = 最大值 (3,5);

任何语言都一样。函数定义告诉您有关函数的信息;它不是从您的代码中调用它的示例。 从 python 函数定义中可以收集到很多信息;哪些参数是必需的或不需要的,它们是位置参数、关键字参数或两者兼而有之。如果有默认值,它们是什么,或者没有。 parm 是否具有特定数据类型。所有这些信息都在定义中。但是要从您的代码进行调用,您可以使用该信息使用正确的语言语法对其进行编码,以您想要的方式进行调用。希望这是有道理的。同样,只是想提供帮助。