Python: 将迭代变量的值添加到for循环中的变量名

Python: Add value of iteration variable to variable name within for loop

我有一个 pandas df,其中有一列(假设是 col3)包含一个数字。这些数字用于多行,我想 运行 分别为每个数字的行创建一个函数。

所以我将每个数字一次写入一个数组,如下所示:

l = df.col3.unique()

然后一个for循环用于运行每个数字的函数:

for i in l:
   a,b = func(df[df.col3 == i])

因此函数获取行,其中 col3 包含每个 运行 的 i 值。函数 returns 两个数据帧(在本例中为 a 和 b)。 我需要每个 运行.

这两个返回的数据帧

我希望能够正确识别它们。为此,我想像这样在循环中保存返回的数据帧:

第一个运行:a123,b123 第二 运行 a456, b456 第三个运行:a789,b789

表示数据帧的名称包含 i 的当前值。

我已经读过我不应该将全局变量用于动态变量名,但不知道如何实现这一点。

谢谢:)

方案A(推荐):

dfs = {}

for i in l:
    dfs["a"+str(i)], dfs["b"+str(i)] = func(df[df.col3 == i])
...

然后你可以像这样使用数据框:

func2(dfs["a1"]) # dfs["a1"] represents func(df[df.col3 == i])'s first return.
...

方案B(不推荐)

如果你绝对想使用局部变量,你需要:

for i in l:
    locals()["a"+str(i)], locals()["b"+str(i)] = func(df[df.col3 == i])

然后您可以使用带有变量名称 a1b1 等的数据帧