ishii-akihiro’s blog

いろいろ試したことやバグ対応の作業履歴を残していきます。

Pandasで正規表現を使った文字列置換をする

概要

PandasのDataFrameに対して、正規表現を使った文字列置換をする。
ついでに属性の値ごとにデータ数をカウントする。

使用するデータ

こんなのをデータフレーム df に入れております。
f:id:ishii-akihiro:20180729125856p:plain

元データはestatの国勢調査
統計GISデータダウンロード | 政府統計の総合窓口

手順

1. 「MOJI」列の値の”〇丁目”を削除(""に置換)して、「町名」列に入力する。

# replace(置換する文字列の正規表現パターン, 置換後の文字列, regex:正規表現を使う場合はTrue)
df['町名'] = df['MOJI'].replace('\d丁目', '', regex=True)

# データフレームの確認
df

f:id:ishii-akihiro:20180729130706p:plain

\dは正規表現で数字1文字を表します。
元データは全角の数字でしたが、変換されていますね。

2. 「町名」ごとにデータ数をカウントする。

# 町名ごとにデータ数をカウント(value_countsの返り値は pandas.Seriesなので、再度DataFrameに変換する)
pd.DataFrame(df2['町名'].value_counts())

f:id:ishii-akihiro:20180729130720p:plain

まとめ

正規表現を使って置換した内容を、
1行のコードで新規の列に追加できました。

ちなみにExcelシートでは正規表現を使った置換はできないと思いますが、
Googleスプレッドシートでは正規表現が使えるという記事がありました。
tanuhack.com