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))
query
A'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.
.query
n 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