def sd2df(self, table: str, libref: str = '<STR_LIT>', dsopts: dict = None, method: str = '<STR_LIT>',<EOL>**kwargs) -> '<STR_LIT>':
dsopts = dsopts if dsopts is not None else {}<EOL>return self.sasdata2dataframe(table, libref, dsopts, method, **kwargs)<EOL>
This is an alias for 'sasdata2dataframe'. Why type all that?
SASdata object that refers to the Sas Data Set you want to export to a Pandas Data Frame

:param table: the name of the SAS Data Set you want to export to a Pandas Data Frame
:param libref: the libref for the SAS Data Set.
:param dsopts: a dictionary containing any of the following SAS data set options(where, drop, keep, obs, firstobs):

    - where is a string
    - keep are strings or list of strings.
    - drop are strings or list of strings.
    - obs is a numbers - either string or int
    - first obs is a numbers - either string or int
    - format is a string or dictionary { var: format }

    .. code-block:: python

                     {'where'    : 'msrp < 20000 and make = "Ford"'
                      'keep'     : 'msrp enginesize Cylinders Horsepower Weight'
                      'drop'     : ['msrp', 'enginesize', 'Cylinders', 'Horsepower', 'Weight']
                      'obs'      :  10
                      'firstobs' : '12'
                      'format'  : {'money': 'dollar10', 'time': 'tod5.'}
                     }
:param method: defaults to MEMORY; the original method. CSV is the other choice which uses an intermediary csv file; faster for large data
:param kwargs: dictionary
:return: Pandas data frame