我有一系列資料幀:
a=[df1,df2,df3]
但我需要變數名作為字串
b=['df1','df2','df3']
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
從這個答案中汲取靈感,您可以使用以下代碼解決您的問題:
def get_var_name(variable):
for name, value in globals().items():
if value is variable:
return name
a = [df1, df2, df3]
b = [get_var_name(el) for el in a]
# print(b) gives ['df1', 'df2', 'df3']
uj5u.com熱心網友回復:
在python中獲取物件的變數名實際上非常棘手。名稱-> 物件映射嚴格是單向的。更糟糕的是,多個名稱可以參考同一個物件(記憶體地址上的相同資料塊)。
然而,這并非不可能。雖然這個方法很臟(當有多個名稱指代同一個物件時。)
假設您的串列a,您的資料框 df1、df2、df2都是全域變數,那么它們都在 globals() 中。您可以嘗試以下單行代碼:
[i for i in globals().keys() if id(eval(i)) in [id(j) for j in a]]
您可以自行驗證。
uj5u.com熱心網友回復:
您可以使用串列理解:
a = [df1, df2, df3]
b = [x.name for x in a]
此答案假定資料框變數的名稱與變數名稱本身匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/374132.html
