Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python・Pandas入門】DataFrameの文字列から数字を削除する方法

PandasでDataFrameの文字列から数字を削除する方法

PythonのPandasライブラリを使うと、DataFrame内の文字列データから数字を簡単に取り除けます。本記事では、replace()メソッドを活用して、特定の列の文字列から数字を削除する手順を解説します。

まず、必要なライブラリをインポートしましょう。

import pandas as pd

サンプル用のDataFrameを作成する

学生の記録を含むDataFrameを作成します。「Id」列には「S01」「S02」のように、アルファベットと数字が混在した文字列が格納されています。

dataFrame = pd.DataFrame(
    {
        "Id": ['S01','S02','S03','S04','S05','S06','S07'],
        "Name": ['Jack', 'Robin', 'Ted', 'Robin', 'Scarlett', 'Kat', 'Ted'],
        "Result": ['Pass', 'Fail', 'Pass', 'Fail', 'Pass', 'Pass', 'Pass']
    }
)

正規表現を使って数字を削除する

「Id」列の文字列から数字を削除するには、str.replace()メソッドに正規表現パターンの\d+(1桁以上の連続した数字)を指定し、空文字''に置き換えます。

dataFrame['Id'] = dataFrame['Id'].str.replace(r'\d+', '', regex=True)

なお、pandas 2.0以降では正規表現による置換を行う際にregex=Trueを明示的に指定することが推奨されているため、上記のコードでは指定しています。

完全なサンプルコード

以下が全体のコードです。

import pandas as pd

# 学生記録を含むDataFrameを作成
dataFrame = pd.DataFrame(
    {
        "Id": ['S01','S02','S03','S04','S05','S06','S07'],
        "Name": ['Jack', 'Robin', 'Ted', 'Robin', 'Scarlett', 'Kat', 'Ted'],
        "Result": ['Pass', 'Fail', 'Pass', 'Fail', 'Pass', 'Pass', 'Pass']
    }
)

print("DataFrame ...\n", dataFrame)

# 特定の列(Id)の文字列から数字を削除
dataFrame['Id'] = dataFrame['Id'].str.replace(r'\d+', '', regex=True)

print("\nUpdated DataFrame...\n", dataFrame)

実行結果

上記のコードを実行すると、次のような出力が得られます。

DataFrame ...
     Id      Name   Result
0  S01      Jack     Pass
1  S02     Robin     Fail
2  S03       Ted     Pass
3  S04     Robin     Fail
4  S05  Scarlett     Pass
5  S06       Kat     Pass
6  S07       Ted     Pass

Updated DataFrame...
   Id      Name   Result
0   S      Jack     Pass
1   S     Robin     Fail
2   S       Ted     Pass
3   S     Robin     Fail
4   S  Scarlett     Pass
5   S       Kat     Pass
6   S       Ted     Pass

実行結果を見ると、「Id」列の値がすべて「S01」→「S」、「S02」→「S」となり、数字部分だけがきれいに削除されていることが確認できます。

ポイントまとめ

  • str.replace()はSeriesの各要素に対して文字列置換を行うメソッド
  • 正規表現パターン\d+は「1桁以上の連続した数字」にマッチする
  • 置換後の文字列を空文字''にすることで、該当部分を削除できる
  • 新しいバージョンのpandasではregex=Trueの指定が推奨される

同様の手法は、IDやコード番号など、接頭辞と数字が組み合わさったデータの前処理にも応用できます。ぜひ実際のデータ分析業務で活用してみてください。

  1. Pythonで文字列から母音を削除する方法をわかりやすく解説

    問題の概要文字列が与えられたとき、その中からすべての母音(a, e, i, o, u)を取り除くことを考えてみましょう。例えば、文字列が「iloveprogramming」である場合、母音を削除すると結果は「lvprgrmmng」になります。解決のための手順この問題は、以下の手順に従うことで解決できます。母音「a, e, i, o, u」を格納したリストを作成するリスト内の各母音に対して、文字列内の該当する文字を空文字列に置き換える実装例理解を深めるために、実際のコードを見てみましょう。class Solution(object): def removeVowels(self, s):

  2. Pythonの正規表現を使って文字列から数値を抽出する方法

    正規表現モジュールを使った抽出方法Pythonで文字列から数値を抽出する場合、標準ライブラリのreモジュール(正規表現モジュール)を使うのが最も高速で効率的な方法です。まずはモジュールをインポートします。>>> import reサンプル文字列の準備ここでは、整数と浮動小数点数が混在した以下のような文字列を例に考えてみましょう。>>> s = my age is 25. I have 55.50 percent marks and 9764135408 is my numberfindall()関数で数値を抽出するfindall()関数は、指定したパターンに