この短いガイドでは、Pandas を使用して文字列内の特定の文字を抽出する方法を説明します。

以下の 8 つのシナリオのそれぞれの目標は、文字列内の数字のみを抽出することです。

  1. 左から
  2. 右から
  3. 真ん中から
  4. シンボルの前
  5. スペースの前
  6. シンボルの後
  7. 同一の記号間
  8. 異なるシンボル間

左からN桁を抽出します。

(1)str[:5]を使って左から5桁の数字を抽出します。

import pandas as pd

data = {"Identifier": ["55555-abc", "77777-xyz", "99999-mmm"]}
df = pd.DataFrame(data)

df["Identifier"] = df["Identifier"].str[:5]

print(df)

結果:

PandasでLEFT、RIGHT、MIDを適用して文字列から文字を抽出する 1

右からN桁を抽出します。

(2)str[-5:]を使って右から5桁の数字を抽出します。

import pandas as pd

data = {"Identifier": ["ID-55555", "ID-77777", "ID-99999"]}
df = pd.DataFrame(data)

df["Identifier"] = df["Identifier"].str[-5:]

print(df)

結果:

PandasでLEFT、RIGHT、MIDを適用して文字列から文字を抽出する 1

中央の「N」桁を抽出します。

str[3:8]を使って真ん中の5桁の数字を抽出します。

import pandas as pd

data = {"Identifier": ["ID-55555-End", "ID-77777-End", "ID-99999-End"]}
df = pd.DataFrame(data)

df["Identifier"] = df["Identifier"].str[3:8]

print(df)

結果:

PandasでLEFT、RIGHT、MIDを適用して文字列から文字を抽出する 2

(4) str.split(“-“).str[0]を使って記号(“-“)の前の数字を抽出します。

import pandas as pd

data = {"Identifier": ["111-AA", "2222222-BB", "33-CC"]}
df = pd.DataFrame(data)

df["Identifier"] = df["Identifier"].str.split("-").str[0]

print(df)

結果:

PandasでLEFT、RIGHT、MIDを適用して文字列から文字を抽出する 3

(5) str.split(” “).str[0]を使ってスペース(” “)の前の数字を抽出します。

import pandas as pd

data = {"Identifier": ["111 AA", "2222222 BB", "33 CC"]}
df = pd.DataFrame(data)

df["Identifier"] = df["Identifier"].str.split(" ").str[0]

print(df)

結果:

PandasでLEFT、RIGHT、MIDを適用して文字列から文字を抽出する 3

(6) str.split(“-“).str[1]を使って記号(“-“)の後の数字を抽出します。

import pandas as pd

data = {"Identifier": ["AA-111", "BB-2222222", "CC-33"]}
df = pd.DataFrame(data)

df["Identifier"] = df["Identifier"].str.split("-").str[1]

print(df)

結果:

PandasでLEFT、RIGHT、MIDを適用して文字列から文字を抽出する 3

(7) str.split(“-“).str[1]を使って、同一の記号(“-“)の間にある数字を抽出します。

import pandas as pd

data = {"Identifier": ["AA-111-AA", "BB-2222222-B", "CC-33-CCC"]}
df = pd.DataFrame(data)

df["Identifier"] = df["Identifier"].str.split("-").str[1]

print(df)

結果:

PandasでLEFT、RIGHT、MIDを適用して文字列から文字を抽出する 3

(8)異なる記号間の数字を抽出します。

import pandas as pd

data = {"Identifier": ["AA-111$AA", "BB-2222222$B", "CC-33$CCC"]}
df = pd.DataFrame(data)

df["Identifier"] = df["Identifier"].str.split("-").str[1]
df["Identifier"] = df["Identifier"].str.split("$").str[0]

print(df)

結果:

PandasでLEFT、RIGHT、MIDを適用して文字列から文字を抽出する 3