使用字典值在for循环中生成数据帧后如何查找数据帧?

比尔布拉德

我想创建一个创建 3 个数据帧的函数,然后取三个数据帧的元素平均。数据帧是使用先前步骤中定义的字典从循环生成的,如下所示:

# extracting and organizing data
def density_dataP(filenames):
    datasets = ["df_1", "df_2", "df_3"]

    for num in filenames:
        for index in range(len(datasets)):
            datasets[index] = pd.DataFrame({
                              #excluding the edges b/c nothing interesting happens there
                    "z-coordinate (nm)": mda.auxiliary.XVG.XVGReader(filenames[num]["water"])._auxdata_values[7:43:1,0], 
                    "water": mda.auxiliary.XVG.XVGReader(filenames[num]["water"])._auxdata_values[7:43:1,1],
                    "acyl": mda.auxiliary.XVG.XVGReader(filenames[num]["acyl"])._auxdata_values[7:43:1,1],
                    "headgroups": mda.auxiliary.XVG.XVGReader(filenames[num]["head"])._auxdata_values[7:43:1,1],
                    "ester": mda.auxiliary.XVG.XVGReader(filenames[num]["ester"])._auxdata_values[7:43:1,1],
                    "protein": mda.auxiliary.XVG.XVGReader(filenames[num]["proa"])._auxdata_values[7:43:1,1]
                     })
    master_data = (df_1 + df_2 + df_3)/3
    return master_data

但是,当我尝试使用有效输入运行该函数时,出现以下错误:

---> 16     master_data = (df_1 + df_2 + df_3)/3
     17     return master_data

NameError: name 'df_1' is not defined

XVGReader 方法的输入需要输入的 XVG 文件的路径,我在字典中包含这些路径。字典的第一层有一个数字,第二层有文件的路径。每个数字都与三个数据帧之一中的所有路径相关联。(即键 1 中的所有路径都用于 df_1 等)我使用的字典大致如下所示:

{1: {'water': $PATH_TO_water1.xvg', 'acyl': $PATH_TO_acyl1.xvg', 'head': $PATH_TO_head1.xvg', 'ester': $PATH_TO_ester1.xvg', 'proa': $PATH_TO_proa1 .xvg'},

2: {'water': $PATH_TO_water2.xvg', 'acyl': $PATH_TO_acyl2.xvg', 'head': $PATH_TO_head2.xvg', 'ester': $PATH_TO_ester2.xvg', 'proa': $PATH_TO_proa2。 xvg'},

3: {'water': $PATH_TO_water3.xvg', 'acyl': $PATH_TO_acyl3.xvg', 'head': $PATH_TO_head3.xvg', 'ester': $PATH_TO_ester3.xvg', 'proa': $PATH_TO_proa3。 xvg'}}

如何让 python 识别在此循环中创建的 DataFrames 或至少获得 master_data 的最终结果?

埃里克·特鲁特

在您的示例中, "df_1" 是 list 中的字符串datasets,而不是变量。如果您想按名称访问,那么您将希望datasets成为一个键为df_1的字典,值为数据框。

但是您不需要在这里命名项目,因为您只需要一个平均值。所以我认为你应该简化这个功能。例如,内部循环datasets似乎创建了相同值的三个副本;好像可以省略。此外,如果文件名是一个dict,其中每个值都是一个数据帧,那么您可以直接迭代这些值。

def density_dataP(filenames):
    datasets = []
    for df in filenames.values():
        datasets.append(pd.DataFrame({                             
                    "z-coordinate (nm)": mda.auxiliary.XVG.XVGReader(df["water"])._auxdata_values[7:43:1,0], 
                    "water": mda.auxiliary.XVG.XVGReader(df["water"])._auxdata_values[7:43:1,1],
                    "acyl": mda.auxiliary.XVG.XVGReader(df["acyl"])._auxdata_values[7:43:1,1],
                    "headgroups": mda.auxiliary.XVG.XVGReader(df["head"])._auxdata_values[7:43:1,1],
                    "ester": mda.auxiliary.XVG.XVGReader(df["ester"])._auxdata_values[7:43:1,1],
                    "protein": mda.auxiliary.XVG.XVGReader(df["proa"])._auxdata_values[7:43:1,1]
                     })
    return pd.concat([datasets]).mean()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用列表在 for 循环中生成数据帧

如何从循环的 n 次迭代生成的 n 个字典列表中生成数据帧?

如何合并在 for 循环中生成的数据帧

使用 forloops 生成数据帧

如何在 r 中生成 for 循环以使用图形获得不同的数据帧输出?

如何在循环中更新数据帧中的值?

函数内的循环以生成数据帧的子集

如何在熊猫数据帧上生成具有随机值的合成数据?

尝试使用dplyr和purrr从另一个数据帧中的值生成数据帧

如何结合字典中不同键的每个值以在Python中生成数据框?

在 for 循环中合并数据帧

使用返回多个值的应用函数从 Pandas groupby 对象生成数据帧

从 groupby 转换生成数据帧

如何合并循环生成的数据帧

在 R 中生成不同数据帧的值之间的排列

如何使用RODBC使用数据库中生成的主键将数据帧保存到表

用字典映射数据帧的特定索引

从输入数据帧中生成频率数据帧

如何使用for循环将值转换为数据帧?

如何存储从循环到数据帧的值?

使用字符向量时循环数据帧错误

在for循环中提取数据帧单元格值

使用字典键作为标题从数据帧列获取字典数据到新的数据帧

从数据帧列表中合并for循环中的数据帧

for 循环中的 Pandas 数据帧连接导致空数据帧

如何在for循环中命名数据帧?

如何在 purrr 循环中更新数据帧?

如何在for循环中绑定数据帧

如何将数据帧索引放在r的for循环中?