ビューまたは別のデータフレームのコピーがあるかどうかをどのように識別できるのだろうか。与えられた pandas.DataFrame
import pandas as pd
df = pd.DataFrame( {'a': [0,8,15], 'b': [42,11,0] } )
ビューだけでなく
df1 = df.loc[ 1:2 ]
そしてコピー
df2 = df.loc[ 1:2 ].copy()
その結果、
>>> df
a b
0 0 42
1 8 11
2 42 0
>>> df1
a b
1 8 11
2 42 0
>>> df2
a b
1 8 11
2 42 0
既存の列に値を割り当てると、df1 の警告が発生する
>>> df1[ 'a' ] = 42
value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
#!/usr/bin/python
df2 ではありません。ただし、値の割り当てはどちらの場合も機能しました。別の DataFrame のコピーを持っているのか、単にビューを持っているだけなのかを確認するにはどうすればよいですか?
df1
データフレームとdf2
タイプによる違いは見られないことに注意してください
>>> type(df1),type(df2)
要素ごとの等価性を比較することによって
>>> df1 == df2
a b
1 True True
2 True True
NDFrame オブジェクトを比較することによって
>>> df1.equals
または列の順序を比較することによっても
>>> from pandas.util.testing import assert_frame_equal
>>> assert_frame_equal(df1, df2)
ビューを使用するdf1
と、元の DataFrame も変更されることに注意してください。
重複の可能性:パンダ: データフレームのサブインデックス作成: コピーとビュー
df1
と でこれを確認する方法には答えませんdf2
。