1

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

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

SAS 服务器布局

4

2 回答 2

1

我今天才看到这个,我想我会对我在这条赛道上看到的有所了解。而且,我想提供帮助,而不是混蛋,所以请以这种方式阅读(我是这样写的)。这里的问题只是对语言的熟悉程度。在这种情况下是python。API 文档是根据代码本身自动生成的部分;方法定义和文档字符串。因此,显示的方法是定义(签名),而不是如何调用它们的示例。这可能有帮助,也可能没有帮助,但这里是关于函数(方法)定义的文档:https ://docs.python.org/3.5/reference/compound_stmts.html#function-definitions

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

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

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

值 = 整数最大值(整数 3,整数 5);

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

值 = 最大值(3,5);

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

于 2020-08-25T17:59:38.943 回答
1

Although as it is not specified in the manual, I ended up using the following code instead and it worked. I just changed table: str = '2020_01_SETTLEMENTS' to table='2020_01_SETTLEMENTS'

tempTable = sas.sasdata2dataframe(table='2020_01_SETTLEMENTS', libref='BANKMKR')
于 2020-08-10T20:33:00.230 回答