ホームページ >バックエンド開発 >Python チュートリアル >Pandas DataFrame のサブセットを選択するときに .copy() を使用する必要があるのはなぜですか?
シナリオ:
DataFrame のサブセットを選択するときに、 .copy() メソッドを使用して親 DataFrame のコピーを明示的に作成するコードに遭遇します。なぜこれが必要なのかという疑問が生じます。
理由:
Pandas データフレームは、従来のプログラミング言語の配列とは異なる動作をします。 pandas DataFrame (my_dataframe[features_list] など) にインデックスを付ける場合、戻り値は新しいコピーを作成せず、元の DataFrame へのビューまたは参照を返します。このビューに加えられた変更は、元の DataFrame に直接影響します。
例:
次のコードを考えてみましょう:
df = pd.DataFrame({'x': [1, 2]}) df_view = df[0:1] # Returns a view of the first row df_view['x'] = -1 # Check the original DataFrame print(df)
出力:
x 0 -1 1 2
ご覧のとおり、df_view を変更すると元の df も変更されましたDataFrame.
解決策:
このような意図しない結果を防ぐために、DataFrame を変更する前に .copy() メソッドを使用して DataFrame のコピーを作成することをお勧めします。これにより、コピーに加えられた変更が元の DataFrame に影響を与えないことが保証されます。
改訂コード:
df = pd.DataFrame({'x': [1, 2]}) df_copy = df[0:1].copy() # Makes a copy of the first row df_copy['x'] = -1 # Check the original DataFrame print(df)
出力:
x 0 1 1 2
この場合、df は変更されません。
データの利点フレームのコピー:
以上がPandas DataFrame のサブセットを選択するときに .copy() を使用する必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。