背景:
Pandas バージョン 0.13 以降では、潜在的な混乱を強調するためのSettingWithCopyWarning 「連鎖」割り当てが原因で発生します。この警告は、DataFrame のコピーが変更されて予期しない結果が生じるシナリオに対処することを目的としています。
警告の意味は何ですか?
この警告は、値が変更されていることを示しています。 DataFrame のスライスのコピーに設定されています。具体的には、次の行を次の行に置き換えることを提案します:
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
quote_df.loc[row_index, 'TVol'] = value
警告を修正する方法:
提供される解決策代わりに loc インデックスを使用するよう警告されています。ただし、これはすべてのユースケースに適しているわけではありません。元の DataFrame の更新を気にしない場合は、次のように警告を安全に無効にすることができます。
import pandas as pd pd.options.mode.chained_assignment = None # default='warn'
その他の説明:
SettingWithCopyWarning は、次のような連鎖割り当てにフラグを立てます。必ずしも期待どおりに機能するとは限りません。この問題は、最初の選択によって DataFrame のコピーが返され、その後の割り当てがそのコピーに対して行われる場合に発生します。このパターンは、変更が元の DataFrame に反映されないため、混乱を招く可能性があります。
あなたの場合、次のコードが警告を引き起こしています:
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
since quote_df['TVol' ] はコピーであるため、割り当てによって元の DataFrame が変更されることはありません。代わりに、
quote_df = quote_df[quote_df['TVol'] > 0] quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
追加リソース:
以上がパンダのSettingWithCopyWarningを理解して解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。