将SAS表转换为Python数据框时,如何在SASPy中指定LIBREF

问题描述

请参阅下图了解我的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',method: str = 'MEMORY')
                           ^
SyntaxError: invalid Syntax

SAS Server Layout

解决方法

尽管在手册中未指定,但我最终还是使用了以下代码,并且可以正常工作。我刚刚将table: str = '2020_01_SETTLEMENTS'更改为table='2020_01_SETTLEMENTS'

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

我今天才看到这个,我想我可以从这首曲目中了解到一些东西。而且,我正在尝试提供帮助,而不是一个混蛋,所以请以这种方式阅读(我以?方式写)。这里的问题仅仅是对语言的熟悉。在这种情况下是python。 API doc是根据代码本身自动生成的部分;方法定义和文档字符串。因此,显示的方法是定义(签名),而不是如何调用它们的示例。这可能有帮助,也可能没有帮助,但这是功能(方法)定义的文档: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);

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

value = max(3,5);

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