我正在读取一堆 SAS 文件,如下所示:
人口统计 = pd.read_sas("demography.sas7bdat", 编码 = 'latin-1')
adverse_event_ds = pd.read_sas("adverse_event_ds.sas7bdat", 编码 = 'latin-1')
rpt10344 = pd.read_sas("rpt10344.sas7bdat", 编码 = 'latin-1')
疫苗管理= pd.read_sas(“疫苗管理.sas7bdat”,编码='latin-1')
lab_tests_blood_chemistry_ds = pd.read_sas(“lab_tests_blood_chemistry_ds.sas7bdat”,编码='latin-1')
lab_tests_hematology_ds = pd.read_sas("lab_tests_hematology_ds.sas7bdat", 编码 = 'latin-1')
lab_tests_miscellaneous_ds = pd.read_sas("lab_tests_miscellaneous_ds.sas7bdat", 编码 = 'latin-1')
important_signs = pd.read_sas("vital_signs.sas7bdat", 编码 = 'latin-1')
我希望能够用这样的东西替换它:
数据集 = [“demography”、“adverse_event_ds”、“rpt10344”、“vaccine_administration”、“lab_tests_blood_chemistry_ds”、“lab_tests_hematology_ds”、“lab_tests_miscellaneous_ds”、“vital_signs”]
对于数据集中的数据集:
数据集 = pd.read_sas(数据集+".sas7bdat", 编码 = 'latin-1')
但是当我做类似的事情时:
demography.info()
我得到:
NameError:名称“人口统计”未定义
幕后发生了什么以及如何解决这个问题?
最佳答案
这是在每次迭代时分配给数据集
,而不是创建新变量(例如人口统计
、rpt10344
等)。
我将使用数据集字典,如下所示:
dsd = {}
for dataset in datasets:
dsd[dataset] = pd.read_sas(dataset+".sas7bdat", encoding = 'latin-1')
或者更Pythonic的路线:
dsd = { d : pd.read_sas(d + ".sas7bdat", encoding = 'latin-1') for d in datasets }
出于解释的原因,我强烈建议不要分配给单个变量名称here和 here但如果你绝对需要,你可以使用
for d in datasets:
globals()[d] = pd.read_sas(d + ".sas7bdat", encoding = 'latin-1')
关于Python Pandas 将列表中的多个 SAS 文件读取到单独的数据帧中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52894787/