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

时间:2018-03-19 22:15:57

标签: python pandas for-loop variable-names

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

所以我把每个数字写成这样一个数组:

l = df.col3.unique()

然后使用for循环为每个数字运行一个函数:

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

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

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

首先运行:a123,b123 第二次运行a456,b456 第三轮:a789,b789

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

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

谢谢:)

1 个答案:

答案 0 :(得分:1)

解决方案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等。