🔪
[python]pandasで文字列を加工する
やりたいこと
- csvをpandasで読み込む。
- あるカラムの文字列データを加工して別のカラムに追加する。
- あるカラムの文字列データを加工して元々のカラムに上書きする。
- 文字列の加工は正規表現も使う。
環境
- Anaconda + Jupyter Notebook
CSVの準備
たとえば次のようなCSVを作成しておく。
sample1.csv
uid,name
1,"大和賢一郎"
2,"福山雅治"
3,"小栗旬"
4,"YOSHIKI"
pandasでCSVを読み込む
名前の先頭二文字だけを切り出す
n1 = df['name'].str[:2]
切り出した文字列を新規カラムとして追加する
df['new_name'] = df['name'].str[:2]
切り出した文字列を元々のカラムに上書きする
df['name'] = df['name'].str[:2]
名前の末尾3文字だけを切り出す
n2 = df['name'].str[-3:]
名前の先頭から一文字目だけを切り出す
n3 = df['name'].str[0]
名前の先頭から二文字目だけを切り出す
n4 = df['name'].str[1]
名前の先頭二文字目から三文字目までを切り出す
n5 = df['name'].str[1:3]
CSVの準備
つづいて、次のようなCSVを作成しておく。
sample2.csv
uid,name
1,"GAQ1892ZA"
2,"09010GALE"
3,"kAKAK21099KKK"
4,"BQQQ81788"
pandasで読み込む
名前から数字のみを切り出す
n1 = df['name'].str.extract('(\d+)', expand=True)
名前に含まれる 'A' を 'あ' に置換する
n2 = df['name'].str.replace('A','あ')
名前に含まれる数字を削除する
n3 = df['name'].str.replace('\d','')
CSVの準備
つづいて、次のようなCSVを準備しておく。
sample3.csv
uid,name
1,"大和 賢一郎"
2,"大和 賢一郎"
3,"大 和 賢 一 郎"
4,"大 和 賢 一 郎"
半角スペースと全角スペースをわざと混在させている。
エディタで見ると下記。
名前に含まれるスペース(全角も半角も)を黒丸に置換する
n1 = df['name'].str.replace('\s', '●')
名前に含まれるスペース(全角も半角も)を削除する
n2 = df['name'].str.replace('\s', '')
Discussion