Memisahkan dan Mengganti String
Pisahkan string menjadi beberapa kolom dengan .str.split(expand=True) dan ganti substring dengan .str.replace().
Memisahkan dan Mengganti String adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Memisahkan String Menjadi List
.str.split(sep) memisahkan setiap string dalam Series pada setiap kemunculan pemisah dan mengembalikan Series berisi list. Tanpa expand=True, setiap elemen berupa list Python, yang berguna untuk menghitung token atau melakukan pemrosesan lanjutan pada tingkat list. Pemisah dapat berupa string literal atau pola regex.
import pandas as pd
df = pd.DataFrame({'tags': ['python,data,pandas', 'ml,ai', 'sql,db,query']})
# Split into a list of strings
df['tag_list'] = df['tags'].str.split(',')
print(df['tag_list'])
# 0 [python, data, pandas]
# 1 [ml, ai]
# 2 [sql, db, query]
# Count tags per row
df['tag_count'] = df['tag_list'].str.len()
print(df['tag_count'].tolist()) # [3, 2, 3]expand=True untuk Memisahkan Menjadi Kolom
Meneruskan expand=True ke .str.split() mengembalikan DataFrame, bukan Series berisi list. Setiap token hasil pemisahan menjadi kolom tersendiri (kolom 0, 1, 2, …). Ini adalah cara standar untuk memperlebar kolom yang dibatasi pemisah — misalnya, memisahkan nama lengkap 'first last' menjadi kolom nama depan dan nama belakang.
import pandas as pd
df = pd.DataFrame({'full_name': ['Alice Smith', 'Bob Jones', 'Carol White']})
# Split into two columns
name_parts = df['full_name'].str.split(' ', expand=True)
name_parts.columns = ['first_name', 'last_name']
df = pd.concat([df, name_parts], axis=1)
print(df)
# full_name first_name last_name
# 0 Alice Smith Alice Smith
# 1 Bob Jones Bob Jones
# 2 Carol White Carol WhiteMembatasi Jumlah Pemisahan dengan n=
Parameter n membatasi jumlah maksimum pemisahan. .str.split(sep, n=1) melakukan pemisahan paling banyak satu kali sehingga menghasilkan paling banyak dua bagian. Ini berguna ketika Anda hanya memerlukan komponen pertama dari sebuah string dan bagian lainnya dapat tetap digabungkan — misalnya, mengambil domain dari email dengan memisahkan pada '@'.
import pandas as pd
df = pd.DataFrame({'email': ['alice@example.com', 'bob@work.org', 'carol@test.net']})
# Split at '@', keep only the first split
parts = df['email'].str.split('@', n=1, expand=True)
df['username'] = parts[0]
df['domain'] = parts[1]
print(df[['username', 'domain']])
# username domain
# 0 alice example.com
# 1 bob work.org
# 2 carol test.netrsplit() untuk Pemisahan dari Sisi Kanan
.str.rsplit(sep, n=1) memisahkan string dari sisi kanan. Ini berguna ketika Anda menginginkan komponen terakhir — misalnya, mengambil ekstensi file dari path dengan memisahkan pada titik terakhir. Jika digabungkan dengan expand=True, metode ini membuat dua kolom: semua bagian sebelum pemisah terakhir dan semua bagian setelahnya.
import pandas as pd
df = pd.DataFrame({'filepath': ['data/raw/sales.csv', 'data/clean/orders.xlsx', 'reports/q1.pdf']})
# Split on the last '/' to separate directory from filename
parts = df['filepath'].str.rsplit('/', n=1, expand=True)
df['directory'] = parts[0]
df['filename'] = parts[1]
print(df[['directory', 'filename']])
# directory filename
# 0 data/raw sales.csv
# 1 data/clean orders.xlsx
# 2 reports q1.pdf.str.replace() untuk Penggantian Substring
.str.replace(pat, repl) mengganti kemunculan pola dalam setiap string. Secara default, pat diperlakukan sebagai ekspresi reguler, jadi gunakan regex=False untuk penggantian string literal. Penggantinya dapat berupa string tetap atau referensi balik regex. Selalu gunakan cara ini untuk penggantian tervectorisasi, bukan perulangan Python.
import pandas as pd
df = pd.DataFrame({'price': ['$1,200.50', '$800.00', '$3,450.75']})
# Remove dollar sign and commas
df['price_clean'] = (
df['price']
.str.replace('$', '', regex=False) # literal $
.str.replace(',', '', regex=False) # literal comma
)
df['price_float'] = df['price_clean'].astype(float)
print(df)
# price price_clean price_float
# 0 $1,200.50 1200.50 1200.5
# 1 $800.00 800.00 800.0
# 2 $3,450.75 3450.75 3450.75Mengganti dengan Pola Regex
Ketika Anda meneruskan regex=True (nilai default), pola tersebut merupakan ekspresi reguler dan penggantinya dapat menyertakan referensi balik seperti r'\1' untuk merujuk pada grup yang ditangkap. Hal ini memungkinkan transformasi teks yang andal, seperti memformat ulang tanggal, menormalkan nomor telepon, atau mengekstrak data terstruktur dari teks bebas.
import pandas as pd
df = pd.DataFrame({'date': ['01-15-2024', '03-20-2024', '07-04-2024']})
# Reformat from MM-DD-YYYY to YYYY-MM-DD using groups
df['date_iso'] = df['date'].str.replace(
r'(\d{2})-(\d{2})-(\d{4})',
r'\3-\1-\2',
regex=True
)
print(df)
# date date_iso
# 0 01-15-2024 2024-01-15
# 1 03-20-2024 2024-03-20
# 2 07-04-2024 2024-07-04Menghitung Penggantian yang Dilakukan
Terkadang Anda perlu memeriksa berapa banyak nilai yang benar-benar diubah oleh suatu penggantian. Bandingkan Series asli dan Series hasil penggantian untuk menghitung baris yang mengalami perubahan. Langkah validasi ini memastikan bahwa pola penggantian cocok sesuai harapan dan membantu menemukan kesalahan regex sejak dini.
import pandas as pd
df = pd.DataFrame({'text': ['foo bar', 'hello foo', 'world', 'foo foo']})
original = df['text'].copy()
df['text'] = df['text'].str.replace('foo', 'baz', regex=False)
changed = (df['text'] != original).sum()
print(f'{changed} rows were modified') # 3
print(df['text'].tolist())
# ['baz bar', 'hello baz', 'world', 'baz baz']Mengganti Beberapa Pola dengan Perulangan
Jika Anda perlu menerapkan banyak penggantian (misalnya, menyeragamkan puluhan singkatan), lakukan perulangan pada kamus pemetaan dan terapkan setiap penggantian secara berurutan. Cara ini lebih mudah dipelihara daripada satu alternatif regex yang kompleks. Buat pemetaan berdasarkan aturan bisnis atau tabel pencarian.
import pandas as pd
df = pd.DataFrame({'dept': ['Eng', 'Engg', 'HR', 'Human Resources', 'Mktg', 'Marketing']})
# Standardisation map
substitutions = {
'Engg': 'Engineering',
'Eng': 'Engineering',
'Human Resources': 'HR',
'Mktg': 'Marketing'
}
for old, new in substitutions.items():
df['dept'] = df['dept'].str.replace(old, new, regex=False)
print(df['dept'].tolist())
# ['Engineering', 'Engineering', 'HR', 'HR', 'Marketing', 'Marketing']Menggabungkan Kembali Bagian yang Dipisahkan
Setelah melakukan pemisahan, Anda mungkin perlu menggabungkan kembali bagian-bagiannya. Untuk Series yang berisi list, gunakan .str.join(separator) untuk menggabungkan elemen list menjadi satu string untuk setiap baris. Untuk menggabungkan nilai antar kolom, gunakan penggabungan string standar dengan + dan .astype(str).
import pandas as pd
df = pd.DataFrame({'parts': [['alpha', 'beta'], ['foo', 'bar', 'baz']]})
# Join list elements with a hyphen
df['joined'] = df['parts'].str.join('-')
print(df['joined'])
# 0 alpha-beta
# 1 foo-bar-bazMenormalkan Spasi
Tugas pembersihan teks yang umum adalah menggabungkan beberapa spasi berturut-turut menjadi satu spasi. Hal ini sering terjadi pada teks hasil pengambilan dari web ketika spasi HTML atau penyalinan-tempelan menambahkan spasi berlebih. Pola regex r'\s+' mencocokkan satu atau beberapa karakter spasi dan menggantinya dengan satu spasi, lalu .str.strip() menghapus spasi di awal atau akhir.
import pandas as pd
df = pd.DataFrame({'address': ['123 Main St', ' 456 Oak Ave ', '789 Pine St']})
df['address_clean'] = (
df['address']
.str.replace(r'\s+', ' ', regex=True)
.str.strip()
)
print(df['address_clean'].tolist())
# ['123 Main St', '456 Oak Ave', '789 Pine St']Praktik: Mengurai Kolom String Terstruktur
Berikut contoh realistis ketika satu kolom berisi data terstruktur seperti 'Alice:25:Engineer'. Kita memisahkan berdasarkan pembatas, memberi nama pada kolom hasil, lalu mengonversi masing-masing kolom ke tipe yang sesuai — sebuah pipeline penguraian dan konversi tipe lengkap yang hanya menggunakan .str.split() dan astype().
import pandas as pd
df = pd.DataFrame({'record': ['Alice:25:Engineer', 'Bob:34:Manager', 'Carol:28:Analyst']})
parts = df['record'].str.split(':', expand=True)
parts.columns = ['name', 'age', 'role']
parts['age'] = parts['age'].astype(int)
result = pd.concat([df, parts], axis=1)
print(result)
# record name age role
# 0 Alice:25:Engineer Alice 25 Engineer
# 1 Bob:34:Manager Bob 34 Manager
# 2 Carol:28:Analyst Carol 28 AnalystPemeriksaan Singkat
Uji pemahaman Anda tentang pemisahan dan penggantian string.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda mempelajari bahwa str.split(sep, expand=True) memperlebar kolom yang dibatasi pemisah menjadi beberapa kolom, n= membatasi jumlah pemisahan, str.rsplit() memisahkan dari kanan, dan str.replace() mengganti pola (dengan dukungan regex). Rangkai operasi pemisahan dan penggantian dengan strip dan lower untuk membangun pipeline normalisasi teks yang lengkap. Selanjutnya, Anda akan menggunakan pola regex untuk mengekstrak dan mencocokkan substring.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memisahkan dan Mengganti String” gratis?
Ya — teks lengkap “Memisahkan dan Mengganti String” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Memisahkan dan Mengganti String”?
Pisahkan string menjadi beberapa kolom dengan .str.split(expand=True) dan ganti substring dengan .str.replace(). Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?
Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Memisahkan dan Mengganti String” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Akses .str
- Memisahkan dan Mengganti String
- Pencocokan Pola dengan Regex
- Menggabungkan dan Membersihkan Kolom Teks