Как указать LIBREF в SASPy при преобразовании таблицы SAS в Python Dataframe

Пожалуйста, посмотрите изображение ниже для моей схемы сервера 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

2 ответа

Решение

Хотя, поскольку это не указано в руководстве, я в конечном итоге использовал следующий код, и он сработал. Я только что изменилсяtable: str = '2020_01_SETTLEMENTS' к table='2020_01_SETTLEMENTS'

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

Я видел это только сегодня и подумал, что пролил свет на то, что вижу в этом треке. И я пытаюсь помочь, а не быть придурком, поэтому, пожалуйста, прочтите это так (я так написал). Проблема здесь просто в знании языка; python в этом случае. Документ API - это автоматически созданный раздел, основанный на самом коде; определения методов и строки документации. Итак, показанные методы являются определениями (сигнатурами), а не примерами их вызова. Это может помочь, а может и не помочь, но вот документ об определениях функций (методов): https://docs.python.org/3.5/reference/compound_stmts.html

Например, в C вы можете определить функцию как

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

но это не пример того, как вызвать его из исходного кода; это определение функции, которое сообщает вам все, что вам нужно знать о ней, чтобы иметь возможность ее вызывать. Если вы попытаетесь закодировать определение как его вызов, вы получите синтаксическую ошибку от компилятора, такую ​​же, как и синтаксическая ошибка, которую Python дал при попытке закодировать a: вместо = в вызове функции.

значение = int max(int 3, int 5);

это синтаксическая ошибка. Правильный способ вызвать эту функцию:

значение = макс (3,5);

То же самое и с любым языком. Определение функции сообщает вам о функции; это не пример вызова его из вашего кода. Из определения функции python можно почерпнуть много информации; какие пармы требуются или нет, какие позиционные, ключевые или и то, и другое. есть ли дефолты и какие они есть, или нет. Если parm имеет определенный тип данных или нет. Вся эта информация есть в определении. Но чтобы выполнить вызов из вашего кода, вы используете эту информацию, чтобы закодировать ее так, как вы хотите ее назвать, с правильным синтаксисом языка. Надеюсь, это имеет смысл. Опять же, просто пытаюсь помочь.

Другие вопросы по тегам