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]
メソッド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ドキュメントの データのインデックス付けと選択 を参照してください。