簡體   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