問題タブ [chained-assignment]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - multiindex を使用した pandas DataFrame の値の設定
以下は、私がやろうとしていることの最小限の例です。次のように、マルチインデックスを持つ pandas DataFrame があります。
だから私が持っているDataFrameは
私が望むのは、インデックス「秒」が2に等しいすべての観測を-1に設定することです。私が念頭に置いているのは、.loc を次のように使用することです。
しかし、.loc は ":" 演算子を受け入れません。
誰かがここで助けてくれますか?
python - SettingWithCopyWarning を受け取りました。続行しても安全ですか?
'let'
DataFrame london
(別のコピーno_eco
) の列を、メソッド内の文字列のみを含む行に置き換えようとしていますcontains()
。コードは次のとおりです。
コードは機能し、文字列が一致しない行を削除しましたが、次の警告が表示されます。
ドキュメントを見ても、何が間違っているのかまだ理解できません。
変数を使用し続けても大丈夫london
ですか、それとも将来問題が発生しますか?
ありがとう。
python - 予期しない SettingWithCopyWarning:
データフレームの特定のしきい値内で値を変更するコードを実行しています。表面的には保証されていないように見えるという警告を受け取りました。
私のコードは既に a.loc[row,column]
割り当てを使用しているため、警告がそれを示唆する理由がわかりません。
私が説明できなかった他の動作は、警告オプションをいじっていたときに、一度警告を に設定するとNone
、設定を に戻して"warn"
も警告が表示されなくなることです。注:私のコードは関数として使用されています。
編集
コードの機能の説明と例は、上部のリンクに記載されています。ただし、ここでの焦点は、警告が既に実装されている実装を示唆している理由を理解することです:パンダ - 別の列との相互参照に基づいて新しい値を計算する
python-3.x - メソッドで列データを変換する際の「SettingwithCopyWarning」の回避
値をリセットしない方法を使用して、列全体を別の形式 (つまり、オブジェクトから日時またはオブジェクトから数値) に変換しようとしているデータを処理しています。以下のコードの各行は、'SettingwithCopyWarning' エラーを返します。
上記の行のいずれかを残すと、エラーが発生します。それらをすべて取り除いても、コードは警告を発しません。
いくつかの調査の結果、チェーン割り当てが使用されている場合に「SettingwithCopyWarning」が発生し、ビューはデータフレーム自体ではなくデータフレームのコピーであることがわかりました (参照: https://www.dataquest.io/blog/settingwithcopywarning / )。
df.loc[<mask or index label values>, <optional column>] = < new scalar value or array like>
また、連鎖割り当てを回避する一般的な形式は(ref: python pandas: how to avoid chained assignment )であることも学びました。
フォームをテストするためだけに、次のように何かをまとめようとしました。
しかし、それは次のようなエラーを返します:
これは、私がそれを詰め込もうとした一般的な形式が、辞書と混同して KeyError を発生させていると私に思わせています。
周りを見回した後、チェーン割り当てを使用せずにメソッド (ドット関数) を使用している列全体 (私のコードなど) にこれを適用する方法がわかりません。
これを回避する方法はありますか?
編集:
指定されたコードの上の行: