HOWTO · Pandas

Pandas で列の部分文字列を取得する

このチュートリアルでは、パンダで列の部分文字列を取得する方法について説明します。

このページの内容

このチュートリアルでは、Pandas で列の部分文字列を取得する方法を学習します。

Pandas で列の部分文字列を取得する

この抽出は、データを操作する多くのシナリオで役立ちます。 たとえば、ユーザーの名前からユーザー名を作成したい場合を考えてみましょう。

これを実行するために、複数のアプローチを使用します。

まず、チュートリアル全体で使用する Pandas データ フレームを作成しましょう。 データ フレームに name 列を含め、その列からユーザー名を抽出することを目指します。

コード:

import pandas as pd

dict = {"Name": ["Shivesh Jha", "Sanay Shah", "Rutwik Sonawane"]}
df = pd.DataFrame.from_dict(dict)

データフレームを見てみましょう。

print(df)

出力:

              Name
0      Shivesh Jha
1       Sanay Shah
2  Rutwik Sonawane

列から部分文字列を取得するために使用できるさまざまな方法を見てみましょう。

str.slice() 関数を使用して Pandas の列の部分文字列を取得する

このアプローチでは、str.slice() 関数を使用して name 列から最初の 3 文字を取得し、それを特定のユーザーのユーザー名として使用します。 slice() 関数では、抽出したい文字列の開始インデックスと終了インデックスを渡す必要があります。

以下のコードを使用して、この機能を実行します。

df["UserName"] = df["Name"].str.slice(0, 3)
print(df)

name 列の最初の 3 文字を含む新しい username 列がある更新されたデータ フレームを見てみましょう。

出力:

              Name UserName
0      Shivesh Jha      Shi
1       Sanay Shah      San
2  Rutwik Sonawane      Rut

name 列から最初の 3 文字を正常に抽出し、それらを新しい username 列で使用したことを出力で確認できます。

角かっこを使用して Pandas の列の部分文字列を取得する

角括弧を使用して文字列にアクセスし、このアプローチで抽出したい文字を取得します。 以下のコードを使用して、このアクションを実行します。

df["UserName"] = df["Name"].str[:3]

出力:

              Name UserName
0      Shivesh Jha      Shi
1       Sanay Shah      San
2  Rutwik Sonawane      Rut

このコードでは、既存の列の最初の 3 文字で新しい列を取得したことがわかります。

str.extract() 関数を使用して Pandas の列の部分文字列を取得する

このアプローチは、名前からユーザーの姓を抽出します。 str.extract() 関数を使用してこれを実装します。

コード:

df["LastName"] = df.Name.str.extract(r"\b(\w+)$", expand=True)

それでは、更新されたデータフレームを確認してみましょう。

print(df)

出力:

              Name  LastName
0      Shivesh Jha       Jha
1       Sanay Shah      Shah
2  Rutwik Sonawane  Sonawane

上記のように、目的の結果が得られました。 したがって、上記の手法を使用して、Pandas の列の部分文字列を取得できます。