ホームページ >バックエンド開発 >Python チュートリアル >条件に基づいて DataFrame 値を置換することが直接機能しないのはなぜですか?それを修正するにはどうすればよいですか?
条件付きロジックを使用した DataFrame 値の置換
Pandas では、DataFrame の操作は重要な側面です。一般的な操作の 1 つは、特定の条件に基づいて値を置換することです。次のシナリオを考えてみましょう:
質問:
しきい値を超える DataFrame 列の値をゼロに置き換えたいと考えています。
df[df.my_channel > 20000].my_channel = 0
を使用してこれを達成しようとしましたが、チャネルを新しいDataFrameにコピーする場合にのみ機能するようです。元の DataFrame ではなぜ機能しないのですか?
回答:
問題は、使用されているインデクサーに関連しています。 Pandas バージョン 0.20.0 より前は、.ix インデクサーが一般的に使用されていました。ただし、それ以降は非推奨になりました。代わりに、.loc または .iloc インデクサーを使用してください。
問題を解決するには、次のコードを利用できます:
mask = df.my_channel > 20000 column_name = 'my_channel' df.loc[mask, column_name] = 0
このコードは次のアクションを実行します:
または、ワンライナーを使用することもできます。
df.loc[df.my_channel > 20000, 'my_channel'] = 0
この場合、.iloc ではなく .loc を使用することをお勧めします。後者の場合、NotImplementedError が発生する可能性があります。
以上が条件に基づいて DataFrame 値を置換することが直接機能しないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。