繁体   English   中英

Python:如何在 for 循环中将 dataframe 的名称传递给 function?

[英]Python: How do I pass name of a dataframe to a function in a for loop?

for cnt in range (2,Maxcnt):
    X="DF"+ str(cnt)
    matchparts(DF1, X)
    print(X)

我想将 DF2 发送到 DFn 到 matchparts function .. 我尝试使用 matchparts(DF1, "DF"+ str(cnt)) 发送它 function 将其作为字符串而不是 DF 接收

基本上有3种方法可以做到这一点:

  1. 使用字典
  2. 使用globals()
  3. 使用 eval(不推荐)

假设您在多个变量中有 dataframe,例如DF1, DF2, DF3.

使用字典

要使用运行时创建的字符串名称访问它们,您可以首先将它们存储在字典中。

例如

result = {
'DF1':DF1,
'DF2':DF2,
'DF3':DF3,
}

现在您可以将 function 称为

for cnt in range (2,Maxcnt):
    X="DF"+ str(cnt)
    matchparts(DF1, result[X])
    print(result[X])

使用全局变量

您可以在 python 中使用globals()执行相同的操作

globals()['DF1']globals()['DF2']应该给你同样的。

所以你的 function 电话会变成

matchparts(DF1, globals()[X])
示例代码
>>> import pandas as pd
>>> df1 = pd.DataFrame({'data':[1,2]})
>>> df1
   data
0     1
1     2
>>> globals()['df1']
   data
0     1
1     2

使用评估

使用 eval 您的 function 调用将变为

matchparts(DF1, eval(X))
示例代码
>>> import pandas as pd
>>> df1 = pd.DataFrame({'data':[1,2]})
>>> eval('df1')

   data
0     1
1     2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM