使用字典和数据框创建带有循环的变量名称的新数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用字典和数据框创建带有循环的变量名称的新数组相关的知识,希望对你有一定的参考价值。

我目前正在处理一些作为具有10000行和20列的数据框导入到Python的数据。这些列存储样品名称和化学元素。 daaaframe当前通过样本名称和时间来索引,如下所示:[1]:https://i.stack.imgur.com/7knqD.png

根据此数据框,我想为每个单独的样本创建一个单独的数组,其中约有25个带有循环。我已经生成了样本名称的索引和数组,这产生了一个看起来像这样的数组

samplename = fuegodataframe.index.levels[0]samplearray = samplename.to_numpy()

array(['AC4-EUH41','AC4-EUH79N','AC4-EUH79S','AC4-EUH80','AC4-EUH81','AC4-EUH81b','AC4-EUH82N','AC4-EUH82W','AC4-EUH84','AC4-EUH85N','AC4_EUH48','AC4_EUH48b','AC4_EUH54N','AC4_EUH54S','AC4_EUH60','AC4_EUH72','AC4_EUH73','AC4_EUH73W','AC4_EUH78','AC4_EUH79E','AC4_EUH79W','AC4_EUH88','AC4_EUH89','bhvo-1','bhvo-2','bir-1','bir-2','gor132-1','gor132-2','gor132-3','sc ol-1','sc ol-2'],dtype = object)

我还用每个变量名的键创建了一个字典。我现在想知道如何使用此字典为每个样本生成单独的变量,以捕获在其中找到样本的所有行。

我已经尝试过以下方法:

for ii in sampledictionary.keys():
     if ii == sampledictionary[ii]: 
        sampledictionary[ii] = fuegodataframe.loc[sampledictionary[ii]]

但是这失败了。我实际上将如何去做这样的事情?这可能吗?

答案

我想您是在问如何动态生成变量,而不是将输出分配给字典中的键。

在Python中,有一个全局函数globals(),它将输出文档中定义的所有变量名。

您可以为该词典动态分配新变量

globals()[f'variablename_{ii}'] = fuegodataframe.loc[sampledictionary[ii]]

如果ii0,则variablename_0将与分配的值一起使用。

通常,这不被认为是一种好的做法,但有时是必需的。

以上是关于使用字典和数据框创建带有循环的变量名称的新数组的主要内容,如果未能解决你的问题,请参考以下文章

遍历嵌套字典以创建数据框并添加新的列值

Python---循环遍历带有数据框的字典

将字典添加为数据框中的新行

如何访问 pandas 数据框列中的字典元素并对其进行迭代以创建填充有各自值的新列?

来自数据框的嵌套字典,带有循环列表

如果现有变量位于数据框中的两个值之间,则创建等于 1 的新变量