データフレームからの選択が元のデータフレームのコピーまたは元のビューであると決定するときにPandasが使用するルールについて混乱しています。
たとえば、
df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))
私query
はaがコピーを返すので、
foo = df.query('2 < index <= 5')
foo.loc[:,'E'] = 40
は、元のデータフレームには影響しませんdf
。また、スカラーまたは名前付きスライスがビューを返すことも理解しています。
df.iloc[3] = 70
または
df.ix[1,'B':'E'] = 222
変わりdf
ます。しかし、もっと複雑なケースになると、私は迷っています。例えば、
df[df.C <= df.B] = 7654321
変更しますがdf
、
df[df.C <= df.B].ix[:,'B':'E']
ではない。
パンダが使用している簡単なルールはありますか?これらの特定のケースで何が起こっているか。特に、特定のクエリを満たすデータフレーム内のすべての値(または値のサブセット)をどのように変更しますか(上記の最後の例で試みているように)?
注:これはこの質問と同じではありません。と私はドキュメントを読んだが、それによって啓発されていません。このトピックに関する「関連」の質問も読みましたが、Pandasが使用している単純なルールや、それをどのように適用するか(たとえば、値(または値のサブセット)の変更)がまだありません。特定のクエリを満たすデータフレーム内。
.query
n numexprによって評価されるので、(ビューではなく)その処理のために常にコピーを返します。それを「ルール」に追加します