我有一个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的当前值。
我已经读过我不应该将全局变量用于动态变量名称,但不知道如何实现它。
谢谢:)
答案 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])
然后您可以使用数据框及其变量名称a1
,b1
等。