Memodifikasi kolom DataFrame
Sebelumnya, Anda telah menyaring baris yang tidak menyerupai nama. Kini, berdasarkan pekerjaan Anda sebelumnya, manajer meminta Anda membuat dua kolom baru: first_name dan last_name. Ia meminta Anda membagi kolom VOTER_NAME menjadi kata-kata pada setiap karakter spasi. Anggap kata terakhir sebagai last_name, dan semua kata lainnya sebagai first_name. Anda akan menggunakan beberapa fungsi baru dalam latihan ini, termasuk .split(), .size(), dan .getItem(). Metode .getItem(index) menerima nilai integer untuk mengembalikan item bernomor sesuai pada kolom. Fungsi .split() dan .size() berada di pustaka pyspark.sql.functions.
Perlu diperhatikan bahwa operasi ini selalu agak spesifik terhadap kasus penggunaan. Membuat data Anda mengikuti suatu format sering kali lebih penting daripada detail spesifik format tersebut. Jarang sekali tugas pembersihan data dibuat hanya untuk satu orang—mencocokkan format yang ditetapkan memungkinkan data lebih mudah dibagikan kemudian (mis., Paul tidak perlu memikirkan nama—Mary sudah membersihkan himpunan datanya).
DataFrame pemilih yang telah difilter dari latihan sebelumnya tersedia sebagai voter_df. Pustaka pyspark.sql.functions tersedia dengan alias F.
Latihan ini merupakan bagian dari kursus
Membersihkan Data dengan PySpark
Instruksi latihan
- Tambahkan kolom baru bernama
splitsyang berisi daftar kemungkinan nama. - Gunakan metode
getItem()dan buat kolom baru bernamafirst_name. - Ambil entri terakhir dari list
splitsdan buat kolom bernamalast_name. - Hapus kolom
splitsdan tampilkanvoter_dfyang baru.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# Add a new column called splits separated on whitespace
voter_df = voter_df.withColumn(____, F.____(voter_df.VOTER_NAME, '\s+'))
# Create a new column called first_name based on the first item in splits
voter_df = voter_df.withColumn(____, voter_df.splits.getItem(____)
# Get the last entry of the splits list and create a column called last_name
voter_df = voter_df.withColumn(____, voter_df.splits.getItem(F.____('splits') - ____))
# Drop the splits column
voter_df = voter_df.____('splits')
# Show the voter_df DataFrame
voter_df.show()