Pandas DataFrame での条件付き値の置換
Pandas DataFrame を使用する場合、指定された条件。この質問は、ユーザーがしきい値を超える特定の列の値をゼロに置き換えようとするシナリオを示しています。
最初に、ユーザーは次のアプローチを使用しようとしました:
df[df.my_channel > 20000].my_channel = 0
しかし、この方法では結果は得られませんでした。これは、Pandas がバージョン 0.20.0 以降 .ix インデクサーを非推奨にしており、ユーザーは代わりに .loc または .iloc インデクサーを使用する必要があるためです。
正しい解決策には、.loc または .iloc を使用して特定の行または列をターゲットにすることが含まれます。そして条件付き置換を実行します。 .loc の使用方法は次のとおりです:
mask = df.my_channel > 20000 column_name = 'my_channel' df.loc[mask, column_name] = 0
または、.loc を使用して同じタスクを 1 行で実行できます:
df.loc[df.my_channel > 20000, 'my_channel'] = 0
マスク変数は、条件を満たす行を識別するのに役立ちます。条件 df.my_channel > 20000、および df.loc[mask, column_name] = 0 は、指定された列の選択された行に 0 を割り当てます。
注: この特定のシナリオでは、代わりに .loc を使用することをお勧めします。 .iloc を使用した整数ベースのブール型インデックス作成は機能しないため、NotImplementedError を回避するために .iloc を削除します。サポートされています。
以上がPandas DataFrame 列の値を条件付きで置換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。