Welche Regeln verwenden Pandas, um eine Ansicht gegen eine Kopie zu generieren?

Ich bin verwirrt über die Regeln, nach denen Pandas entscheidet, dass eine Auswahl aus einem Datenrahmen eine Kopie des ursprünglichen Datenrahmens oder eine Ansicht des Originals ist.

Wenn ich zum Beispiel

df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))

Ich verstehe, dass aquery Gibt eine Kopie zurück, so dass so etwas wie

foo = df.query('2 < index <= 5')
foo.loc[:,'E'] = 40

hat keine Auswirkung auf den ursprünglichen Datenrahmen,df. Ich verstehe auch, dass skalare oder benannte Slices eine Ansicht zurückgeben, so dass Zuweisungen zu diesen, wie z

df.iloc[3] = 70

oder

df.ix[1,'B':'E'] = 222

wird sich veränderndf. Aber ich bin verloren, wenn es um kompliziertere Fälle geht. Zum Beispiel,

df[df.C <= df.B]  = 7654321

Änderungendf, aber

df[df.C <= df.B].ix[:,'B':'E']

nicht.

Gibt es eine einfache Regel, die Pandas verwendet und die ich einfach vermisse? Was passiert in diesen speziellen Fällen? und insbesondere, wie ändere ich alle Werte (oder eine Teilmenge von Werten) in einem Datenrahmen, die eine bestimmte Abfrage erfüllen (wie ich es im letzten Beispiel oben versucht habe)?

Hinweis: Dies ist nicht dasselbe wiediese Frage; und ich habe gelesendie Dokumentation, bin aber nicht davon erleuchtet. Ich habe auch die "verwandten" Fragen zu diesem Thema durchgelesen, aber ich vermisse immer noch die einfache Regel, die Pandas verwendet, und wie ich sie anwenden würde, um zum Beispiel die Werte (oder eine Teilmenge von Werten) zu ändern. in einem Datenrahmen, der eine bestimmte Abfrage erfüllt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage