我有我在劇本早期定義了不少dataframes,我想在它們之間迭代和修改它們像這樣列表:循環通過和修改的變量
for df in [df_fap, df_spf, df_skin, ...]:
df = df.filter(regex=(assay + r"[0-9]+"))
然而,這是行不通的。循環結束時,數據幀的值不會被修改。我偶然發現了這個post,它有點類似(除了我事先定義了我的變量),但它並沒有提供解決我的確切問題的方法。謝謝!
我有我在劇本早期定義了不少dataframes,我想在它們之間迭代和修改它們像這樣列表:循環通過和修改的變量
for df in [df_fap, df_spf, df_skin, ...]:
df = df.filter(regex=(assay + r"[0-9]+"))
然而,這是行不通的。循環結束時,數據幀的值不會被修改。我偶然發現了這個post,它有點類似(除了我事先定義了我的變量),但它並沒有提供解決我的確切問題的方法。謝謝!
的循環變量df
依次分配列表中的每個元素。如果您重新分配df
,那麼您已使df
引用其他內容。它不會影響列表。
在遍歷列表時重新分配循環變量不會更改列表,更不用說更改用於填充列表的變量。
new_list = [df.filter(whatever) for df in (df_fap, df_spf, df_skin, ...)]
然後,如果您也想重新分配你的出發變量,你可以使用:
df_fap, df_spf, df_skin, ... = [df.filter(whatever) for df in (df_fap, df_spf, df_skin, ...)]
嘗試
for i in range(len(df_list)):
df_list[i] = df_list[i].filter(...)
啊,我想這樣做,而沒有事先定義列表。不知道是否有可能。編輯:試過。這不起作用 – quantik
所以你必須:
df_fap, df_spf, df_skin, ... = new_list
你甚至可以在一杆做這兩個操作您的變量列表
[df_fap, df_spf, df_skin, ...]
當你循環您建立了一個新的變量
for df in [df_fap, df_spf, df_skin, ...]:
df = value
每次迭代(循環)是正在重置DF的值,也就是說不關你的變量會改變
答案khelwood給了意味着你「會重新聲明所有的變量,並在一個
df_fap, df_spf, df_skin, ... = [df_fap, df_spf, df_skin, ...]
應用過濾器嘗試做這樣的事情
a,b = ["apple","banana"]
在您的控制檯和khelwood的解釋將有道理
不,我沒有得到一個錯誤。一旦循環結束,數據框就完全不被修改。例如,'df_fap'有一個'NC-1'列,它應該被刪除(並且它是在我做'df_fap = df_fap.filter(regex =(assay + r「[0-9] +」))''但是在上面的腳本中不會被刪除。 – quantik
@Remolten不,它不應該。 – khelwood
是的,因爲分配不會修改任何內容。 –