web-dev-qa-db-ja.com

loc関数in pandas

Locがpython pandasで使用されている理由を以下に示す例で説明できますか?

for i in range(0, 2):
  for j in range(0, 3):
    df.loc[(df.Age.isnull()) & (df.Gender == i) & (df.Pclass == j+1),
            'AgeFill'] = median_ages[i,j]
17
kenway

メソッドdf.Age.isnull().locおよびdf.Gender == iはデータフレームのスライスのビューを返すか、コピーを返す可能性があるため、ここではdf.Pclass == j+1の使用をお勧めします。これはパンダを混乱させる可能性があります。

.locを使用しない場合、3つの条件すべてを連続して呼び出すことになり、連鎖インデックスと呼ばれる問題につながります。 .locを使用すると、1ステップですべての条件にアクセスでき、pandasは混乱しなくなりました。

これについては、.locを使用しないと pandasドキュメンテーション で操作が失敗する場合のいくつかの例とともに詳しく読むことができます。

簡単な答えは、多くの場合、.locを使用せずに単に入力するだけで済むことです(たとえば)

df['Age_fill'][(df.Age.isnull()) & (df.Gender == i) & (df.Pclass == j+1)] \
                                                          = median_ages[i,j]

常にSettingWithCopy警告が表示され、コードは少し面倒になります。

私の経験では、.locは頭を悩ませるのに時間がかかり、コードを更新するのが少し面倒でした。しかし、それは非常にシンプルで非常に直感的です:df.loc[row_index,col_indexer]

詳細については、pandasドキュメントの データのインデックス付けと選択 を参照してください。

21
KirstieJane