Dataframe内の住所から都道府県を抽出したい
解決したいこと
Dataframe内の
”住所”列から 都道府県名だけを抜き出し、”都道府県”の列に張り付けたい
発生している問題・エラー
print(df.columns)
print(df.dtypes)
print(df.isnull().sum())
//以下return内容
Index(['店舗コード', '店舗名', '店舗名カナ', '紹介文', '条件等', '分類', '電話番号', '都道府県', '住所',
'アクセス・道案内', '営業時間', '定休日', '支払い方法', 'お店のホームページ', 'カット価格', '設備/席数',
'スタッフ数', '駐車場', 'こだわり条件', '備考', 'ページURL'],
dtype='object')
店舗コード object
店舗名 object
店舗名カナ object
紹介文 object
条件等 object
分類 object
電話番号 object
都道府県 object
住所 object
アクセス・道案内 object
営業時間 object
定休日 object
支払い方法 object
お店のホームページ object
カット価格 object
設備/席数 object
スタッフ数 object
駐車場 object
こだわり条件 object
備考 object
ページURL object
dtype: object
店舗コード 0
店舗名 10
店舗名カナ 10
紹介文 10
条件等 1010
分類 6
電話番号 14008
都道府県 0
住所 0
アクセス・道案内 15
営業時間 15
定休日 15
支払い方法 21
お店のホームページ 29690
カット価格 15
設備/席数 15
スタッフ数 15
駐車場 15
こだわり条件 20
備考 22035
ページURL 15
dtype: int64
住所のカラムには、
北海道札幌市北区○○ ○○ビル○○
というように普遍的な住所内容が入っております
該当するソースコード
# 都道府県の抽出する正規表現パターンをつくる
pattern = '東京都|北海道|(京都|大阪)府|.{2,3}県'
# 都道府県を抽出する
df['都道府県'] = df['住所'].apply(lambda x:re.match('東京都|北海道|(?:京都|大阪)府|.{2,3}県', x).group())
df
# エラー内容
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-88-bbe03f77542f> in <module>()
1 # 都道府県を抽出する
----> 2 df['都道府県'] = df['住所'].apply(lambda x:re.match('東京都|北海道|(?:京都|大阪)府|.{2,3}県', x).group())
3 df
1 frames
pandas/_libs/lib.pyx in pandas._libs.lib.map_infer()
<ipython-input-88-bbe03f77542f> in <lambda>(x)
1 # 都道府県を抽出する
----> 2 df['都道府県'] = df['住所'].apply(lambda x:re.match('東京都|北海道|(?:京都|大阪)府|.{2,3}県', x).group())
3 df
AttributeError: 'NoneType' object has no attribute 'group'
自分で試したこと
最初は住所に欠損値があったので、
df['住所'] = df['住所'].fillna("住所情報無し")
という形で補完したりしたのですが、結果は変わらず、無いと言われてしまっております。
どの部分が誤ってしまっているのでしょうか。
宜しくお願い致します。
0