我有一個資料框串列,如下所示:
filters = [U,B,V,R]
現在我稍后在我的代碼中執行檢查,檢查給定條件并回傳滿足此條件的資料幀。因此,例如,我可能會回傳一個包含“新”資料框的新串列,如下所示:
covered_filts = [U,B,V]
最初,我正在繪制資料并將名稱分配給圖的圖例作為 DataFrame 通過創建原始 DataFrame 名稱的串列繪制資料,但作為字串,例如:
filter_names = ['U', 'B', 'V', 'R']
for s in range(len(covered_filts)): plt.plot(phases, ind_int_flux,label = filter_names[s])
現在,如果串列中的第一個 DataFrame 被覆寫,這將非常有效,因為我的字串串列中的名稱分配以相同的順序發生。然而,當串列 (U) 中的第一個 DataFrame 沒有被覆寫但由于分配標簽時,迭代從串列中的第一個字串 ('U') 開始,它錯誤地將該名稱分配給涵蓋的下一個 DataFrame (egB)。
因此,我想知道是否有另一種方法可以確保將過濾器名稱正確分配給正在繪制的 DataFrame。
我對如何去做這件事有點不知所措,任何幫助將不勝感激。
謝謝
ps 我的想法是,根據我的“covered_filts”串列中回傳的資料幀,我每次都可以創建一個新串列來包含相應的資料幀名稱,但我似乎無法讓它作業。
uj5u.com熱心網友回復:
您可以使用 dict 來跟蹤您的資料幀或資料幀的使用attrs:
df_U = pd.DataFrame({'A': [46, 75, 1], 'B': [68, 50, 21], 'C': [98, 23, 48]})
df_B = df_U.copy()
df_V = df_U.copy()
df_U.attrs['name'] = 'U'
df_B.attrs['name'] = 'B'
df_V.attrs['name'] = 'V'
filters = [df_U, df_B, df_V]
covered_filts = [df_U, df_V]
filter_names = [df.attrs.get('name') for df in covered_filts]
輸出:
>>> filter_names
['U', 'V']
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/366372.html
下一篇:比較特定行中的列值
