PythonのPandasでの文字列の分割について

Python,イメージ

AI実装検定のご案内

PythonのPandasライブラリにおける文字列の分割(split)について、基本から応用まで体系的に解説します。

特にSeries.str.split()メソッドはデータ前処理において非常に強力で、テキスト処理やカラムの分解などで頻繁に使われます。

目次

基本:str.split() の使い方

Pandasでは、文字列を分割するには Series.str.split() を使います。

これはPython標準のstr.split()に似ていますが、PandasのSeriesDataFrameに対して動作します。

基本構文

df['column_name'].str.split(pat=None, n=-1, expand=False)
  • pat: 区切り文字(省略時は空白文字全体にマッチ)
  • n: 最大分割数(-1は制限なし)
  • expand: Trueで分割後に複数列に展開(DataFrameになる)

使用例(実用的な例とともに)

カンマ区切りの文字列をリストに分割

import pandas as pd

df = pd.DataFrame({'data': ['apple,banana,grape', 'dog,cat', 'python']})
df['split'] = df['data'].str.split(',')
print(df)

出力

                 data               split
0  apple,banana,grape  [apple, banana, grape]
1            dog,cat        [dog, cat]
2             python          [python]

複数列に分割して展開 (expand=True)

df_split = df['data'].str.split(',', expand=True)
print(df_split)

出力

       0       1      2
0  apple  banana  grape
1    dog     cat   None
2 python    None   None

最大分割数を指定(n=1

df['first_rest'] = df['data'].str.split(',', n=1)
print(df['first_rest'])

出力

0    [apple, banana,grape]
1             [dog, cat]
2               [python]

実用的なシナリオ例

氏名データから「姓」「名」を分離

df = pd.DataFrame({'name': ['山田 太郎', '佐藤 花子', '田中 一郎']})
df[['last_name', 'first_name']] = df['name'].str.split(' ', expand=True)
print(df)

日付や時間の文字列をパース

df = pd.DataFrame({'datetime': ['2025-07-22 12:30:45', '2025-08-01 09:15:10']})
df[['date', 'time']] = df['datetime'].str.split(' ', expand=True)
print(df)

ファイル名の拡張子を抽出

df = pd.DataFrame({'filename': ['data.csv', 'image.png', 'report.pdf']})
df[['name', 'ext']] = df['filename'].str.rsplit('.', n=1, expand=True)
print(df)

str.rsplit() は右から分割したいときに使います(例:ファイル名やURL分割)

split vs extract の違い

  • str.split() は単純な文字や文字列で分割したいとき
  • str.extract() は正規表現を使って複雑なパターンを抽出したいとき

例:メールからユーザー名だけ取りたい

df = pd.DataFrame({'email': ['user1@example.com', 'test2@domain.jp']})
df['username'] = df['email'].str.extract(r'(^[^@]+)')

補足:NaN への対応

文字列が NaN の場合は split() はそのまま NaN を返します。

データの欠損処理と併用することが多いです。

df = pd.DataFrame({'col': ['a,b', None, 'c,d']})
df['split'] = df['col'].str.split(',')

高度な応用:複数の文字で分割

複数の区切り文字(例えばカンマまたはセミコロン)で分割したい場合は、str.split()ではなく正規表現ベースの分割が必要です。

import re
df = pd.DataFrame({'text': ['a,b;c', 'x;y,z']})
df['split'] = df['text'].str.split(r'[;,]')

まとめ

メソッド概要
str.split()区切り文字で分割(リスト型)
str.split(expand=True)分割結果を複数列として展開
str.rsplit()右から分割
str.extract()正規表現による抽出
str.get(n)リストからn番目の要素を取得

以上、PythonのPandasでの文字列の分割についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次