私はタイタニックのデータセットで遊んでいますが、Age
カラムのすべてのNaN/Null値にその中央値ベースPclass
。ここで条件付きスライスに基づくパンダDataFrameのセルの変更
は、いくつかのデータです:
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
が2と3を含めるのではなく、1に等しいスライスを1つだけ含んでいます:
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
を返します。
[Minimal、Complete、Verifiable](http://stackoverflow.com/help/mcve)の例、特にカットアンドペースト可能な例を提供する場合、これらの質問にはより迅速かつ大量に回答されます。例と予想されるデータ。 –
私は実際のデータフレームからいくつかのサンプルデータを追加しました。 – prdctofchem
@prdctofchem追加されたサンプルデータに基づいて回答を更新しました。 – Craig