Halo Saya memiliki kerangka data dengan kolom yang berisi string dengan kode area di depan beberapa nama negara.

Saya ingin menghapus semua karakter sebelum huruf pertama jika ada untuk mendapatkan kolom dengan nama negara saja.

Contoh:

1-United States
44-United Kingdom
Mauritius
61-Australia
Cambodia
Colombia
86-China
852-Hong Kong
Romania
46-Sweden

Keluaran yang diinginkan:

United States
United Kingdom
Mauritius
Australia
Cambodia
Colombia
China
Hong Kong
Romania
Sweden

Terima kasih sebelumnya! Saya menghargai setiap masukan tentang ini!

-1
Matthias Gallagher 12 Mei 2021, 12:22

2 jawaban

Jawaban Terbaik

Anda dapat menggunakan ekspresi reguler untuk tugas ini dengan cara berikut:

import pandas as pd
df = pd.DataFrame({"name":["1-United States","44-United Kingdom","Mauritius"]})
df["clean_name"] = df["name"].str.replace(r"^[^A-Za-z]+", "", regex=True)
print(df)

Keluaran:

                name      clean_name
0    1-United States   United States
1  44-United Kingdom  United Kingdom
2          Mauritius       Mauritius

Penjelasan: ekspresi reguler digunakan untuk menghapus semua (+) karakter utama (1 ^), yang bukan huruf ASCII (^ ke-2 (A-Za-z). Hati-hati bahwa solusi ini terbatas pada huruf ASCII saja.

2
Daweo 12 Mei 2021, 09:30

Coba ini:

df['col'] = df['col'].apply(lambda s: ''.join([i for i in s if i.isalpha()]))

Untuk melakukannya menggunakan regex:

df['col'] = df['col'].str.replace('[^a-zA-Z ]', '')
3
Shivam Roy 12 Mei 2021, 09:36