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])
然后您可以使用带有变量名称 a1
、b1
等的数据帧
我有一个 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])
然后您可以使用带有变量名称 a1
、b1
等的数据帧