Pandas: buat kolom baru menggunakan beberapa kondisi if else
Anda dapat menggunakan sintaks berikut untuk membuat kolom baru di pandas DataFrame menggunakan beberapa kondisi if else:
#define conditions conditions = [ (df[' column1 '] == ' A ') & (df[' column2 '] < 20 ), (df[' column1 '] == ' A ') & (df[' column2 '] >= 20 ), (df[' column1 '] == ' B ') & (df[' column2 '] < 20 ), (df[' column1 '] == ' B ') & (df[' column2 '] >= 20 ) ] #define results results = [' result1 ', ' result2 ', ' result3 ', ' result4 '] #create new column based on conditions in column1 and column2 df[' new_column '] = np. select (conditions, results)
Contoh khusus ini membuat kolom bernama new_column yang nilainya didasarkan pada nilai kolom1 dan kolom2 di DataFrame.
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Contoh: Membuat Kolom Baru Menggunakan Beberapa Kondisi If Else di Pandas
Misalkan kita memiliki pandas DataFrame berikut yang berisi informasi tentang berbagai pemain bola basket:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' points ': [15, 18, 22, 24, 12, 17, 20, 28]}) #view DataFrame print (df) team points 0 to 15 1 to 18 2 to 22 3 to 24 4 B 12 5 B 17 6 B 20 7 B 28
Sekarang katakanlah kita ingin membuat kolom baru bernama class yang mengklasifikasikan setiap pemain ke dalam salah satu dari empat grup berikut:
- Bad_A jika timnya A dan poin <20
- Baik_A jika timnya A dan poin ≥ 20
- Bad_B jika timnya B dan poin <20
- Baik_B jika timnya B dan poin ≥ 20
Kita dapat menggunakan sintaks berikut untuk melakukan ini:
import numpy as np #define conditions conditions = [ (df[' team '] == ' A ') & (df[' points '] < 20 ), (df[' team '] == ' A ') & (df[' points '] >= 20 ), (df[' team '] == ' B ') & (df[' points '] < 20 ), (df[' team '] == ' B ') & (df[' points '] >= 20 ) ] #define results results = [' Bad_A ', ' Good_A ', ' Bad_B ', ' Good_B '] #create new column based on conditions in column1 and column2 df[' class '] = np. select (conditions, results) #view updated DataFrame print (df) team points class 0 A 15 Bad_A 1 A 18 Bad_A 2 A 22 Good_A 3 A 24 Good_A 4 B 12 Bad_B 5 B 17 Bad_B 6 B 20 Good_B 7 B 28 Good_B
Kolom baru bernama class menampilkan peringkat setiap pemain berdasarkan nilai pada kolom tim dan poin .
Catatan : Anda dapat menemukan dokumentasi lengkap untuk fungsi NumPy select() di sini .
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:
Pandas: cara membuat kolom boolean berdasarkan kondisi
Pandas : Cara menghitung nilai pada kolom dengan syarat
Pandas: cara menggunakan Groupby dan menghitung secara kondisional