Pandas String – Memisahkan string Menggunakan split()

Method split berguna untuk memisahkan target string berdasarkan separator yang kita input.

Mari kita import library dan data yang digunakan.

import pandas as pd

df = pd.read_csv("chicago.csv").dropna(how="all")
df["Department"] = df["Department"].astype("category")
df.head()

Parameter yang digunakan adalah

  • expand: mengembalikan hasil split menjadi dataframe.
  • n: jumlah split yang akan dilakukan.

Contoh code untuk memisahkan first name dan last name dari kolom Name.

df["Name"].str.split(",")
0            [AARON,   ELVIA J]
1          [AARON,   JEFFERY M]
2             [AARON,   KARINA]
3        [AARON,   KIMBERLEI R]
4        [ABAD JR,   VICENTE M]
                  ...          
32057    [ZYGADLO,   MICHAEL J]
32058     [ZYGOWICZ,   PETER J]
32059      [ZYMANTAS,   MARK E]
32060    [ZYRKOWSKI,   CARLO E]
32061    [ZYSKOWSKI,   DARIUSZ]
Name: Name, Length: 32062, dtype: object

Pandas akan mengembalikan series of list. Perhatikan tanda koma diatas bukan bagian dari string, namun bagian dari list.

Jika Anda ingin mengambil last name, dapat digunakan method get dengan index 0. Struktur nama adalah lastname, firstname.

df["Name"].str.split(",").str.get(0)
0            AARON
1            AARON
2            AARON
3            AARON
4          ABAD JR
           ...    
32057      ZYGADLO
32058     ZYGOWICZ
32059     ZYMANTAS
32060    ZYRKOWSKI
32061    ZYSKOWSKI
Name: Name, Length: 32062, dtype: object

Contoh code menggunakan expand pada kolom Name, dan diassign ke dataframe original menjadi kolom baru lastname dan firstname.

df[["Last Name", "First Name"]] = df["Name"].str.split(",", expand=True)

Contoh menggunakan parameter n, kita akan split kolom Position Tile, dengan melakukan 1 kali split. Position title akan displit berdasarkan spasi, dan hanya dilakukan 1 kali.

Silakan bereksperimen dengan mengubah nilai n menjadi 2.

df["Position Title"].str.split(" ", n = 1, expand=True)

Latihan

Cari 3 firstname yang paling banyak digunakan. Tips, dapatkan firstname, tanpa middle name.

Solusi

df["Name"].str.split(",").str.get(1).str.split(" ").str.get(2).value_counts().head(3)
MICHAEL    1153
JOHN        899
JAMES       676
Name: Name, dtype: int64
Sharing is caring:

Leave a Comment