前提・実現したいこと
for分の中にif文を組み込んだところエラーが出て困っています。
政令指定都市の区部を除去したいです。
市区町村名のみのものを残し、それ以降が書いてあるもののデータをそのまま取っ払いたいです。
もしfor分とif文を使わないやり方があればその他のやり方を知りたいです。
ex
札幌市→札幌市(行を残す)
札幌市中央区→行を消す
横浜市青葉区→行を消す
渋谷区→渋谷区
発生している問題・エラーメッセージ
nothing to repeat at position 0
該当のソースコード
python
1i = 0 2for i in range(0,376): 3 if (df_b15_2_2['都道府県名'] == '東京都') & (df_b15_2_2[df_b15_2_2['市区町村名'].str.contains('*市*'or'*区*'or'*町*'or'*村*')]): 4 df_b15_2_2.iloc[[i],[3]] == np.nan 5 i += 1 6 elif (df_b15_2_2['都道府県名'] == '東京都') & (df_b15_2_2[df_b15_2_2['市区町村名'].str.contains('*市'or'*区'or'*町'or'*村')]): 7 i += 1 8 elif (df_b15_2_2['都道府県名'] != '東京都') & (df_b15_2_2[df_b15_2_2['市区町村名'].str.contains('*市*'or'*区*'or'*町*'or'*村*')]): 9 df_b15_2_2.iloc[[i],[3]] == np.nan 10 i += 1 11 elif (df_b15_2_2['都道府県名'] != '東京都') & (df_b15_2_2[df_b15_2_2['市区町村名'].str.contains('*市'or'*区'or'*町'or'*村')]): 12 i += 1 13 14 15
試したこと
都道府県名が東京都で市区町村名に市、区、町、村が含まれるならば(は任意の文字列)NaN出力して、市、区、町、村が含まれるならばそのままで
東京都で
東京都ではなくて市、区、町、村が含まれるならばNaN出力して、
東京都ではなくて~市、区、町、村が含まれるならばそのままで
それぞれに1を足して繰り返すとしたつもりです。
NaNにはdropnaで後ほど消すつもりです。
補足情報(FW/ツールのバージョンなど)
df_b15_2_2['市区町村名'] = np.where((df_b15_2_2['市区町村名'] = '市'or'区'or'町'or'村'),np.nan,df_b15_2_2['市区町村名'])
これも考えたのですがどうでしょうか
前提(実現したいこと)が理解しずらいです。
'都道府県名'と'市区町村名'という2つの列があるようですが、それぞれがどのような文字列の場合、どのような結果を得たい(行を削除するだけ?)のかを、具体例とともに示してください。
市区町村名(ex 横浜市、渋谷区)の後に文字列(ex 横浜市緑区)が続く場合にはNaNを市区町村名に記入したいです。(ex 横浜市緑区 -> NaN) しかし"横浜市"だけのものもあるのでそれのみだったらそれのみを残したいです。東京の場合は23区もあるので(ex 渋谷区、新宿区)先ほどの"横浜市緑区"とごちゃ混ぜにならないように分けただけです。
・この処理を行うために「都道府県名」列の内容を見る必要はあるでしょうか?(やりたい内容からは、その必要はないと思われます)
・条件に該当する場合は「行を消したい」のか「NaNを記入したい」のかどちらでしょうか?(最終的にNaNの行を消したい?)
・政令指定都市ではない「鎌倉市御成町」は条件に該当するでしょうか?
・政令指定都市だが「渋谷区広尾」は条件に該当するでしょうか?
なお、質問への追記・修正への回答は、この欄に書くのではなく、質問本文を編集して追記ください。