Python Pandas 将列表中的多个 SAS 文件读取到单独的数据帧中

标签 python pandas

我正在读取一堆 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 }

出于解释的原因,我强烈建议不要分配给单个变量名称herehere但如果你绝对需要,你可以使用

for d in datasets:
    globals()[d] = pd.read_sas(d + ".sas7bdat", encoding = 'latin-1')

关于Python Pandas 将列表中的多个 SAS 文件读取到单独的数据帧中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52894787/

相关文章:

Python/Pandas 从 csv 创建 zip 文件

python - 如何遍历python中的两列?

python - 查找 DataFrame 中两列之间的时间差

python - 如何将数据帧的值复制到另一个数据帧的最后一列/行

python - 按 pandas 数据框中的列中的重复值进行聚合

python - 文本转列功能

Python身份: Multiple personality disorder,需要代码收缩

python - 如果语句为 False,我可以抛出异常吗?

python - 为 Pandas 中的每个索引选择最后一年

python - 如何修改日期值以仅保留月份值