我正在玩泰坦尼克號數據集,我想要做的是填寫Age
列的所有NaN/Null值,其中值基於Pclass
。基於條件切片更改熊貓數據框中的單元格
下面是一些數據:
train
PassengerId Pclass Age
0 1 3 22
1 2 1 35
2 3 3 26
3 4 1 35
4 5 3 35
5 6 1 NaN
6 7 1 54
7 8 3 2
8 9 3 27
9 10 2 14
10 11 1 Nan
這裏是我想和落得什麼:
PassengerId Pclass Age
0 1 3 22
1 2 1 35
2 3 3 26
3 4 1 35
4 5 3 35
5 6 1 35
6 7 1 54
7 8 3 2
8 9 3 27
9 10 2 14
10 11 1 35
我想出的第一件事情是這樣的 - 在簡潔的利益,我Pclass
只包括一個等於1而不包括2和3的切片:
Pclass_1 = train['Pclass']==1
train[Pclass_1]['Age'].fillna(train[train['Pclass']==1]['Age'].median(), inplace=True)
據我所知,這種方法創建一個視圖,而不是編輯train
本身(我不太明白這與副本有什麼不同,或者如果他們在記憶方面是類似的 - 那是我會喜歡的聽到如果可能)。我特別喜歡關於主題View vs Copy, How Do I Tell?的Q/A,但它不包括我正在尋找的洞察力。
翻閱熊貓文檔,我瞭解了爲什麼你想用.loc
來避免這個陷阱。然而,我似乎無法得到正確的語法。
Pclass_1 = train.loc[:,['Pclass']==1]
Pclass_1.Age.fillna(train[train['Pclass']==1]['Age'].median(),inplace=True)
我迷失在指數中。這最終會尋找一個名爲False
的列,這個列顯然不存在。如果沒有鏈接索引,我不知道如何做到這一點。 train.loc[:,train['Pclass']==1]
返回異常IndexingError: Unalignable boolean Series key provided
。
通常,如果您提供[最小,完整和可驗證]示例(特別是可切割和粘貼的示例),這些問題將得到更快速和更大的回答示例和預期數據。 –
我現在已經添加了一些來自真實數據框的示例數據。 – prdctofchem
@prdctofchem我已根據添加的示例數據更新了我的答案。 – Craig