Saya bingung tentang aturan yang digunakan Panda saat memutuskan bahwa pilihan dari kerangka data adalah salinan dari kerangka data asli, atau tampilan pada aslinya.
Jika saya punya, misalnya,
df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))
Saya mengerti bahwa query
mengembalikan salinan sehingga sesuatu seperti
foo = df.query('2 < index <= 5')
foo.loc[:,'E'] = 40
tidak akan berpengaruh pada dataframe asli, df
. Saya juga memahami bahwa skalar atau irisan bernama mengembalikan tampilan, sehingga tugas ke ini, seperti
df.iloc[3] = 70
atau
df.ix[1,'B':'E'] = 222
akan berubah df
. Tapi saya bingung ketika sampai pada kasus yang lebih rumit. Sebagai contoh,
df[df.C <= df.B] = 7654321
berubah df
, tapi
df[df.C <= df.B].ix[:,'B':'E']
tidak.
Apakah ada aturan sederhana yang digunakan Panda yang baru saja saya lewatkan? Apa yang terjadi dalam kasus khusus ini; dan khususnya, bagaimana cara mengubah semua nilai (atau subset nilai) dalam kerangka data yang memenuhi kueri tertentu (seperti yang saya coba lakukan pada contoh terakhir di atas)?
Catatan: Ini tidak sama dengan pertanyaan ini ; dan saya telah membaca dokumentasinya , tetapi saya tidak tercerahkan olehnya. Saya juga telah membaca pertanyaan "Terkait" tentang topik ini, tetapi saya masih kehilangan aturan sederhana yang digunakan Pandas, dan bagaimana saya akan menerapkannya - misalnya - mengubah nilai (atau subset nilai) dalam kerangka data yang memenuhi kueri tertentu.
.query
akan SELALU mengembalikan salinan karena apa yang dilakukannya (dan bukan tampilan), karena dievaluasi oleh n numexpr. Jadi saya akan menambahkan itu ke 'aturan'