パンダ: DataFrame から選択すると、コピーではなくビューが作成されるのはどのような場合ですか?

Linda Hamilton
リリース: 2024-11-05 00:12:02
オリジナル
617 人が閲覧しました

Pandas: When Does Selecting from a DataFrame Create a View vs. a Copy?

Pandas: ビューとコピーの生成ルールを理解する

ビューとコピーの識別における混乱

Pandas DataFrame からの選択結果がビューになるかコピーになるかを判断するのは難しい場合があります。この混乱は主に、さまざまなインデックス作成操作とその動作の変化から発生します。

一般規則

  • すべての DataFrame 操作は本質的にコピーを作成します。
  • inplace=True オプションを使用すると、インプレースでの変更が可能になります。
  • 値を設定するインデクサー (例: .loc、.iloc、.iat、.at) は通常、操作をインプレースで実行します。
  • インデクサーを使用して単一のデータ型オブジェクトから値を取得すると、多くの場合、ビューが生成されます (ただし、メモリ レイアウトはこれに影響する可能性があります)。
  • インデクサーを使用して複数のデータ型オブジェクトから値を取得すると、常にビューが生成されます。 copy.

具体的な例

  • 比較への値の代入:

    <code class="python">df[df.C <= df.B] = 7654321</code>
    ログイン後にコピー

    インデクサー .loc が値をインプレースで設定するために使用されるため、この割り当ては元の DataFrame df を変更します。

  • 連鎖インデックス:

    <code class="python">df[df.C <= df.B].loc[:, 'B':'E']</code>
    ログイン後にコピー

    この操作は信頼できない可能性があるため、推奨されません。潜在的な問題を回避するには、代わりに次の構文を使用します。

    <code class="python">df.loc[df.C <= df.B, 'B':'E']</code>
    ログイン後にコピー

クエリに基づいた値の変更

クエリ内のすべての値を変更するには特定のクエリ条件を満たすデータフレームの場合は、クエリ条件を引数として loc インデクサーを使用します。例:

<code class="python">df.loc[df.C <= df.B, 'E'] = 40</code>
ログイン後にコピー

この割り当ては、df.C が df.B 以下である行の 'E' 列の値のみを変更します。

以上がパンダ: DataFrame から選択すると、コピーではなくビューが作成されるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!