Pandas'ın bir veri çerçevesinden bir seçimin orijinal veri çerçevesinin bir kopyası veya orijinal üzerinde bir görünüm olduğuna karar verirken kullandığı kurallar konusunda kafam karıştı.
Örneğin, varsa
df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))
queryA'nın bir kopya döndürdüğünü anlıyorum, böylece
foo = df.query('2 < index <= 5')
foo.loc[:,'E'] = 40
orijinal veri çerçevesi üzerinde hiçbir etkisi olmayacaktır df. Skaler veya adlandırılmış dilimlerin bir görünüm döndürdüğünü de anlıyorum, böylece bunlara atamalar
df.iloc[3] = 70
veya
df.ix[1,'B':'E'] = 222
değişecek df. Ama daha karmaşık vakalar söz konusu olduğunda kayboldum. Örneğin,
df[df.C <= df.B] = 7654321
değişiklikler df, ama
df[df.C <= df.B].ix[:,'B':'E']
değil.
Pandaların kullandığı ve benim kaçırdığım basit bir kural var mı? Bu özel durumlarda neler oluyor; ve özellikle, belirli bir sorguyu karşılayan bir veri çerçevesindeki tüm değerleri (veya değerlerin bir alt kümesini) nasıl değiştirebilirim (yukarıdaki son örnekte yapmaya çalıştığım gibi)?
Not: Bu, bu soruyla aynı değildir ; ve belgeleri okudum , ama ondan aydınlanmadım. Ayrıca bu konuyla ilgili "İlgili" soruları da okudum, ancak Pandas'ın kullandığı basit kuralı ve bunu nasıl uygulayacağımı - örneğin - değerleri (veya bir değer alt kümesini) değiştirmeyi hâlâ özlüyorum belirli bir sorguyu karşılayan bir veri çerçevesinde.
.queryn numexpr tarafından değerlendirildiği için, HER ZAMAN yaptığı şey nedeniyle (bir görünüm değil) bir kopya döndürecektir. Bu yüzden bunu 'kurallara' ekleyeceğim