前提・実現したいこと
pandasを用いてデータクリーニングを行なっています。
csvファイルに保存された複数年のデータに対して、ループ処理で全ての年度に関して特定の文字列を含む要素のみをNaNに書き換えたいと考えています。
例えば、クロスセクションデータに「777(a)」という要素が含まれている時、「(a)」という文字列を含むこの要素のみを「NaN」に書き換えたいというものです。(この要素が含まれる行の、他のデータは変更したくありません。)
試したこと
str.contains()を用いて特定の文字列を含む行を抽出することを試みました。
そこからどうデータの書き換えに繋げれば良いのかわかりませんでした。
要領の得ない質問で恐縮ですが、なにどぞよろしくお願いします。
サンプルデータとして上のようなものをご用意しました。
やりたいことはAさんの身長が「165(a)」、Bさんの体重のデータが「60(a)」となっているのを、それぞれ「NaN」に変えたいというものです。
また上記2年分のデータがあったとして、複数年のデータをまとめてループ処理で「(a)」という文字列を含む要素のみをを「NaN」に変えたいと考えています。
実際のデータは大規模なものなので一つ一つ値を代入する手法が取れません。
また、mask()を用いて第一引数にstr.contains('(a)')などとして'(a)'を含む要素をNaNに置き換えることを試みたのですが上手くいきませんでした。
質問修正依頼をくださった方ありがとうございます。