2017-09-27 32 views
1

道歉,因爲我是新手。如何從存儲在列表中的多個數據框中刪除列?

我現在正在熊貓玩耍。我想要在存儲在列表中的兩個數據框中放置一個特定的列。這是我寫的。

combine = [train, test] 

for dataset in combine: 
    dataset = dataset.drop('Id', axis=1) 

但是,這是行不通的。如果我明確地這樣做,如train = train.drop('Id', axis=1),這工作正常。

我很欣賞在這種情況下,兩種方式的任何一種方式,但有什麼辦法可以使用數據框列表從兩個列中刪除?

回答

2

您的解決方案無法正常工作的原因是因爲dataset是一個名稱,指向列表combine中的項目。你有沒有和dataset = dataset.drop('Id', axis=1)重新分配的權利的想法,但你所做的一切是覆蓋名dataset並沒有真正將新的數據框列表combine


選項1

創建一個新的列表

combine = [d.drop('Id', axis=1) for d in combine] 

選項2
或改變地方與inplace=True

for d in combine: 
    d.drop('Id', axis=1, inplace=True) 
+1

這是非常快 – Dark

+1

韋爾普每個數據幀,還有我的選項2. –

+0

對不起球員。我會打得更好,我發誓。 – piRSquared

1

或許

combine = [df1, df2] 
for i in range(len(combine)): 
    combine[i]=combine[i].drop('Id', axis=1) 
+0

我喜歡這種方法,因爲它對我來說更有意義。然而,這讓我想知道我是否理解DataFrames和列表如何在一起工作是錯誤的,因爲我必須調用combine [0]或[1]來查看帶有刪除Id字段的數據框。如果我只是打電話給我的原始火車DataFrame,它仍然顯示。該列表是否製作單獨的對象,而不是引用給定的DataFrame? 我會分開研究,肯定是我的誤解。謝謝大家! – Staticwolf

+0

@Staticwolf你可以指定它,train = combine [0],test = combine [1] – Wen

+0

非常簡單的解決方案,謝謝。 – Staticwolf

相關問題