ホームページ > バックエンド開発 > Python チュートリアル > パンダのSettingWithCopyWarningを理解して処理する方法?

パンダのSettingWithCopyWarningを理解して処理する方法?

Barbara Streisand
リリース: 2024-12-26 19:26:14
オリジナル
148 人が閲覧しました

How to Understand and Handle Pandas' SettingWithCopyWarning?

SettingWithCopyWarning: Pandas での説明と処理

Pandas 0.13.0rc1 で導入された SettingWithCopyWarning は、DataFrame のスライスまたはコピーに値を設定するときに潜在的な問題についてユーザーに警告します。この警告は、混乱や予期しない動作を防ぐことを目的としています。

警告について

この警告は、データフレームのスライスまたはコピーに値が設定される「連鎖割り当て」によって発生します。例:

df[df['A'] > 2]['B'] = new_val  # new_val not set in df
ログイン後にコピー

この例では、最初の選択 (df[df['A'] > 2]) はコピーを返し、このコピーに「B」を設定しようとすると、元のデータフレーム「df」は更新されません。 「df」を正しく更新するには、loc アクセサー:

df.loc[df['A'] > 2, 'B'] = new_val
ログイン後にコピー

警告の処理

1 を使用します。警告の無視

変更を元の DataFrame に反映させる必要がないことが確実な場合は、警告を無効にすることができます:

import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'
ログイン後にコピー

2. loc および iloc の使用

スライスまたはコピーへの割り当てには、元の DataFrame を直接変更できる loc または iloc アクセサーを使用します。

df.loc[df['A'] > 2, 'B'] = new_val
df.iloc[2:5, 4] = [1, 8, 8]
ログイン後にコピー

3.コピーの作成

DataFrame の新しい参照が必要な場合は、変更する前に DataFrame.copy() を使用してコピーを作成します。

new_df = df.copy()
new_df['C'] = df['A'] + df['B']
ログイン後にコピー

4. DataFrame の再生成

特定のケースでは、元の quote_df を変更する代わりに、必要な変更を加えて新しい DataFrame を再生成できます。

quote_df = pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg'))
quote_df.rename(columns={'A':'STK', 'B':'TOpen', ...}, inplace=True)
quote_df['TVol'] = quote_df['TVol'] / TVOL_SCALE
quote_df['TAmt'] = quote_df['TAmt'] / TAMT_SCALE
quote_df['TDate'] = quote_df.TDate.map(lambda x: x[0:4]+x[5:7]+x[8:10])
ログイン後にコピー

以上がパンダのSettingWithCopyWarningを理解して処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート