Zastosowanie .loc
tutaj zalecane, ponieważ metody df.Age.isnull()
, df.Gender == i
i df.Pclass == j+1
może powrócić widok plasterków ramki danych lub może odesłać. Może to mylić pandy.
Jeśli nie używasz .loc
, kończysz wywoływanie wszystkich 3 warunków w serii, co prowadzi do problemu o nazwie przykuty indeksowanie. Gdy używasz .loc
, jednak masz dostęp do wszystkich warunków w jednym kroku i pandy nie są już zdezorientowane.
Możesz przeczytać więcej na ten temat wraz z przykładami, kiedy nie używać .loc
spowoduje niepowodzenie operacji w pandas documentation.
Odpowiedź jest prosta, że choć często można uciec z nieużywania .loc
i wpisanie (na przykład)
df['Age_fill'][(df.Age.isnull()) & (df.Gender == i) & (df.Pclass == j+1)] \
= median_ages[i,j]
zawsze otrzymasz ostrzeżenie SettingWithCopy
i Twój kod będzie trochę bałaganu na to.
Z mojego doświadczenia wynika, że .loc
zajęło mi trochę czasu, aby mi przeszkadzać i było trochę denerwujące, aktualizując mój kod. Ale jest naprawdę bardzo prosty i bardzo intuicyjny: df.loc[row_index,col_indexer]
.
Więcej informacji można znaleźć w dokumentacji pandy na stronie Indexing and Selecting Data.
W twoim przykładzie '.loc' jest używany głównie dlatego, że próbujesz uzyskać dostęp do komórki przez indeks kolumny" AgeFill ". –