我正在嘗試創建 3 個資料框,并在每個串列的第二個元素之后命名它們。
在我的實際專案中,有 10 多個資料框,并且數量可能會有所不同。
我不知道如何在函式中構造 return 陳述句。我還相信,當我宣告 時x[1] = pd.DataFrame(),我無意中嘗試更改串列值,而我的意圖是使用串列值作為 df 名稱本身。
import pandas as pd
names = [
['SPtab', 'sp', 'man'],
['SBtab', 'sb', 'man'],
['SDtab', 'sd', 'man']
]
def create_dfs():
for x in names:
x[1] = pd.DataFrame()
return
print(sp)
print(sb)
print(sd)
uj5u.com熱心網友回復:
這應該可行(使用動態全域變數是一種不好的做法,如果使用python字典會更好,此解決方案使用動態變數。較低的使用字典):
import pandas as pd
names = [
['SPtab', 'sp', 'man'],
['SBtab', 'sb', 'man'],
['SDtab', 'sd', 'man']
]
def create_dfs():
for x in names:
exec(f"%s = pd.DataFrame()" % (x[1]), globals())
create_dfs()
create_dfs()創建幾個空變數,其名稱定義在names. 它使用內置exec()函式來定義一個具有在names串列中定義的名稱的變數。當exec()被呼叫時,它globals()作為引數被呼叫以確保變數是全域變數。
或者你可以用字典來做:
import pandas as pd
names = [
['SPtab', 'sp', 'man'],
['SBtab', 'sb', 'man'],
['SDtab', 'sd', 'man']
]
def create_dfs(names):
dfs = {}
for x in names:
dfs[x[1]] = pd.DataFrame()
return dfs
dfs = create_dfs(names)
對于此解決方案create_dfs(),回傳一個包含所有資料幀的字典。此輸出分配給一個名為dfs
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/443075.html
