文字列処理¶
Unicode 正規化¶
補足 この機能はpandas
0.16.1 標準にポーティングされました。API は unicodedata.normalize と同一です。引数form
を省略することはできなくなるため注意してください。
Series.str.normalize
は、標準の unicodedata.normalize
と同じ処理を Series
の値に対して行います。
>>> import pandas as pd
>>> s = pd.Series([u'アイウエオ', u'カキクケコ', u'ガギグゲゴ', u'ABCDE'])
>>> s
0 アイウエオ
1 カキクケコ
2 ガギグゲゴ
3 ABCDE
dtype: object
>>> s.str.normalize('NFKC')
0 アイウエオ
1 カキクケコ
2 ガギグゲゴ
3 ABCDE
dtype: object
引数として、unicodedata.normalize
と同じフォーマットを渡すことができます。
NFC
: 正規形 C。NFKC
: 正規形 KC。NFD
: 正規形 D。NFKD
: 正規形 KD。
>>> s.str.normalize('NFD')
0 アイウエオ
1 カキクケコ
2 ガギグゲゴ
3 ABCDE
dtype: object
全角/半角変換¶
Series.str.z2h
で値を 全角文字から半角文字へ変換、 Series.str.h2z
で値を 半角文字から全角文字へ変換できます。
>>> s = pd.Series([u'アイウエオ', u'ABC01', u'DE345'])
>>> z = s.str.h2z()
>>> z
0 アイウエオ
1 ABC01
2 DE345
dtype: object
>>> z.str.z2h()
0 アイウエオ
1 ABC01
2 DE345
dtype: object
変換の対象とする文字のグループはキーワードオプションで変更できます。それぞれのキーワードについて対象となる文字列は以下の通りです。デフォルトでは全て True
で、全ての文字が変換されます。変換したくないグループがある場合は 対応するキーワードに False
を指定してください。
補足 kana
には日本語の記号 (句読点) も含まれることに注意してください。
kana
:ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノ ハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロワヲンヴー・「」。、
alpha
:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
digit
:0123456789
symbol
:!"#$%&'()*+,"-./:;<=>?@[\]^_`~{|}
>>> s = pd.Series([u'アイウエオ', u'ABC01', u'DE345'])
# アルファベットは全角にしない
>>> s.str.h2z(alpha=False)
0 アイウエオ
1 ABC01
2 DE345
dtype: object
# カナ、アルファベットは全角にしない
>>> s.str.h2z(kana=False, alpha=False, digit=True)
0 アイウエオ
1 ABC01
2 DE345
dtype: object
# カナ、アルファベット、数値は全角にしない = 記号以外は半角のまま
>>> s.str.h2z(kana=False, alpha=False, digit=False)
0 アイウエオ
1 ABC01
2 DE345
dtype: object