Pandas Series.str.strip()() 関数
Series.str.strip()は、Pandas で文字列の両端の空白文字を除去するための関数です。
データ処理の過程で、ユーザー入力やファイルから読み取ったテキストデータをクリーンアップする必要がよくあります。これらのデータの両端には余分なスペース、タブ、改行が含まれることがあります。strip()この関数は文字列の両端の空白文字を除去し、データをよりきれいに整えます。
単語の意味:strip「剥がす、除去する」という意味で、ここでは文字列の両端の空白文字を除去することを示します。
基本構文とパラメータ
str.strip()は Series の文字列アクセサメソッドです。そのため、まず文字列を含む Series を用意し、次に.strアクセサを使用して呼び出す必要があります。
構文形式
Series.str.strip(to_strip=None)
パラメータの説明
| パラメータ | 型 | 必須かどうか | 説明 | デフォルト値 |
|---|---|---|---|---|
| to_strip | str | 任意 | 除去する文字のセットを指定します。指定しない場合、デフォルトで空白文字(スペース、タブ、改行など)を除去します。 | None(空白文字) |
関数の説明
- 戻り値:両端の空白文字を除去した新しい Series を返します。
- 効果:各文字列要素の両端の空白文字を除去します。途中の空白文字はそのまま保持されます。
- 注意:文字列の両端の文字だけを除去し、途中の文字には影響しません。
実例
簡単なものから複雑なものまでの一連の例を通して、str.strip()使い方を徹底的にマスターしましょう。
例1: 基本的な使い方 - 両端の空白を除去
実例
import pandas as pd
# 空白文字を含む Series を作成
s = pd.Series([' hello ', 'tworldt', 'nサンプルn', ' python '])
# str.strip() を使用して両端の空白を除去
result = s.str.strip()
print("元の Series:")
print(repr(s)) # repr() を使用して元の文字を表示(不可視文字を含む)
print("n空白除去後の結果:")
print(result)
# 空白文字を含む Series を作成
s = pd.Series([' hello ', 'tworldt', 'nサンプルn', ' python '])
# str.strip() を使用して両端の空白を除去
result = s.str.strip()
print("元の Series:")
print(repr(s)) # repr() を使用して元の文字を表示(不可視文字を含む)
print("n空白除去後の結果:")
print(result)
出力結果:
原始 Series: 0 ' hello ' 1 'tworldt' 2 'nサンプルn' 3 ' python ' dtype: object 去除空白后的结果: 0 hello 1 world 2 サンプル 3 python
コード解説:
pd.Series([' hello ', ...])空白文字を含む Series を作成しました。repr(s)文字列の元の内容を表示するために使用され、スペース、タブなどの不可視文字を含みます。s.str.strip()各文字列の両端の空白文字を除去しました。- 文字列の途中にある空白文字はそのまま保持されます。
例2: 指定した文字を除去
パラメータを指定することで、to_strip除去したい文字を指定できます。
実例
import pandas as pd
# 特定の文字を含む Series を作成
s = pd.Series(['xxxhello xxx', 'yyyworldyyy', 'zzzサンプルzzz'])
# 両端の 'x' 文字を除去
result_x = s.str.strip('x')
# 両端の 'y' 文字を除去
result_y = s.str.strip('y')
# 両端の 'z' 文字を除去
result_z = s.str.strip('z')
print("元の Series:")
print(s)
print("n'x' 除去後の結果:")
print(result_x)
print("n'y' 除去後の結果:")
print(result_y)
print("n'z' 除去後の結果:")
print(result_z)
# 特定の文字を含む Series を作成
s = pd.Series(['xxxhello xxx', 'yyyworldyyy', 'zzzサンプルzzz'])
# 両端の 'x' 文字を除去
result_x = s.str.strip('x')
# 両端の 'y' 文字を除去
result_y = s.str.strip('y')
# 両端の 'z' 文字を除去
result_z = s.str.strip('z')
print("元の Series:")
print(s)
print("n'x' 除去後の結果:")
print(result_x)
print("n'y' 除去後の結果:")
print(result_y)
print("n'z' 除去後の結果:")
print(result_z)
出力結果:
原始 Series: 0 xxxhello xxx 1 yyyworldyyy 2 zzzサンプルzzz dtype: object 去除 'x' 后的结果: 0 hello xxx 1 yyyworldyyy 2 zzzサンプルzzz 去除 'y' 后的结果: 0 xxxhello xxx 1 worldyyy 2 zzzサンプルzzz 去除 'z' 后的结果: 0 xxxhello xxx 1 yyyworldyyy 2 サンプルzzz
コード解説:
strip('x')文字列の両端の 'x' 文字のみを除去します。- 文字列の途中にも同じ文字がある場合、それは除去されません。
- 両端に連続して現れる文字のみが除去されます。
例3: 実データのスペース問題を処理
ファイルやユーザー入力から取得したデータを処理する場合、strip()非常に役立ちます。
実例
import pandas as pd
# フォームから収集したユーザー名データをシミュレーション(余分なスペースを含む可能性あり)
usernames = pd.Series([' admin ', 'user123', ' moderator ', 'guest'])
# ユーザー名をクリーンアップ
cleaned_usernames = usernames.str.strip()
print("元のユーザー名:")
print(usernames)
print("nクリーンアップ後のユーザー名:")
print(cleaned_usernames)
# 空白を除去した後に比較
print("n空白除去後に等しいか:")
print(cleaned_usernames == 'admin')
# フォームから収集したユーザー名データをシミュレーション(余分なスペースを含む可能性あり)
usernames = pd.Series([' admin ', 'user123', ' moderator ', 'guest'])
# ユーザー名をクリーンアップ
cleaned_usernames = usernames.str.strip()
print("元のユーザー名:")
print(usernames)
print("nクリーンアップ後のユーザー名:")
print(cleaned_usernames)
# 空白を除去した後に比較
print("n空白除去後に等しいか:")
print(cleaned_usernames == 'admin')
出力結果:
原始用户名: 0 admin 1 user123 2 moderator 3 guest dtype: object 清理后的用户名: 0 admin 1 user123 2 moderator 3 guest 清理后的用户名: 0 True 1 False 2 False 3 False
コード解説:
strip()ユーザー名の前後のスペースをクリーンアップしました。- これにより、ユーザー入力が
' admin '正しく一致することが保証されます。'admin'。 - これはデータクレンジングの重要なステップであり、スペースによるマッチング失敗を防ぐことができます。
関連関数
Pandas には空白を除去する他の関数もあります:
str.lstrip()- 文字列の左側(先頭)の空白文字のみを除去します。str.rstrip()- 文字列の右側(末尾)の空白文字のみを除去します。
実例
import pandas as pd
s = pd.Series([' hello world '])
print("元の文字列:", repr(s[0]))
print("strip():", repr(s.str.strip()[0])) # 両端を除去
print("lstrip():", repr(s.str.lstrip()[0])) # 左側を除去
print("rstrip():", repr(s.str.rstrip()[0])) # 右側を除去
s = pd.Series([' hello world '])
print("元の文字列:", repr(s[0]))
print("strip():", repr(s.str.strip()[0])) # 両端を除去
print("lstrip():", repr(s.str.lstrip()[0])) # 左側を除去
print("rstrip():", repr(s.str.rstrip()[0])) # 右側を除去
出力結果:
原始字符串: ' hello world ' strip(): 'hello world' lstrip(): 'hello world ' rstrip(): ' hello world'
注意事項
str.strip()デフォルトでは空白文字を除去します。スペース、タブ(t)、改行(n)、復帰(r)などが含まれます。- この関数は文字列の両端の文字だけを除去し、途中の文字には影響しません。
- Series に NaN 値が含まれる場合、
strip()NaN が返されます。 - この関数は新しい Series を返し、元のデータは変更されません。
その他の拡張