将 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 是否具有特定数据类型。所有这些信息都在定义中。但是要从您的代码进行调用,您可以使用该信息使用正确的语言语法对其进行编码,以您想要的方式进行调用。希望这是有道理的。同样,只是想提供帮助。
请参阅下图了解我的 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 是否具有特定数据类型。所有这些信息都在定义中。但是要从您的代码进行调用,您可以使用该信息使用正确的语言语法对其进行编码,以您想要的方式进行调用。希望这是有道理的。同样,只是想提供帮助。