3 回答

TA貢獻1860條經驗 獲得超8個贊
提供?AB
這將創建一個字符串形式的數據框名稱列表
[var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
isinstance(eval(var), pd.core.frame.DataFrame)
DataFrame
在當前實例中找到任何一個。
import pandas as pd
# creates a list of strings
df_names_str = [var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
# creates a list of dataframes
df_list = [eval(var) for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
# creates a dict of dataframes
df_dict = {f'{var}': eval(var) for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)}
# test function
def test(v: pd.DataFrame):
? ? print(v.info())
# function call with list of dataframes
for var in df_list:
? ? test(var)
# function call with dict of dataframes
for k, v in df_dict.items():
? ? test(v)
使用你的循環
必須評估字符串名稱才能將其轉換為 pandas 數據框對象。
variable=['v1', 'v2', 'v3', 'v11', 'v12', 'v13']
for var in variables:
? ? function(eval(f'data_{var}'))

TA貢獻1887條經驗 獲得超5個贊
基本解決方案:
variable=['v1','v2','v3','v11','v12','v13']
for var in variable:
function("data_"+var)

TA貢獻1946條經驗 獲得超3個贊
好的,啟發了您的所有幫助,我認為最好的解決方案是使用字典將數據幀的名稱保存為字典的鍵。
for var in ['v1','v2','v3','v11','v12','v13']: function(data_dict['data_'+var.lower()])
添加回答
舉報