2017-06-19 89 views
0

這是一個基本問題,但我想遍歷數據幀列表並針對每個數據幀,將索引設置爲數據幀中的一列。下面的代碼的問題是它不保存帶有新索引的數據幀。如何格式化此For循環,以便在for循環之外永久更改數據框?謝謝。熊貓循環播放數據幀和變化索引列表

dflist = [df_1, df_2, df_3] 

for i in dflist: 
    i = i.set_index('column_2') 

回答

2
for i in dflist: 
    i.set_index('column_2', inplace=True) 
0

與嘗試到位選項: i = i.set_index('column_2', inplace=True)

+0

在循環中分配df只會給您一個不必要的副本,該副本在循環範圍結束時立即gc:ed。 –

1

正如你可能已經猜到了,我只是一個臨時值。使用i作爲僅使用枚舉的索引

for i, df in enumerate(dflist): 
dflist[i] = dflist[i].set_index('column_2')) 
+0

是的!偉大的迴應。感謝您的輸入。這更有意義。 –

+0

這樣做的唯一原因是,如果您創建一個帶有數據框的新列表,因爲運行時將不得不創建一個數據框並將其複製到列表中,並且無論如何都要將gc中的舊項目複製到該列表中。那麼最好使用inplace,但應該謹慎使用,因爲不可變的語義更容易推理。 –

+0

是的。我會讓雙方去看看對我來說什麼更好。謝謝。 –