Pandas: สร้างคอลัมน์ใหม่โดยใช้เงื่อนไข if else หลายเงื่อนไข
คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อสร้างคอลัมน์ใหม่ใน DataFrame แพนด้าโดยใช้เงื่อนไข 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)
ตัวอย่างนี้สร้างคอลัมน์ชื่อ new_column ซึ่งค่าจะขึ้นอยู่กับค่าของ column1 และ column2 ใน DataFrame
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: สร้างคอลัมน์ใหม่โดยใช้เงื่อนไข If Else หลายรายการใน Pandas
สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ซึ่งมีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:
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
ตอนนี้ สมมติว่าเราต้องการสร้างคอลัมน์ใหม่ที่เรียกว่า คลาส ซึ่งจะแยกประเภทผู้เล่นแต่ละคนให้เป็นหนึ่งในสี่กลุ่มต่อไปนี้:
- Bad_A ถ้าทีมเป็น A และคะแนน < 20
- Good_A ถ้าทีมเป็น A และคะแนน ≥ 20
- Bad_B ถ้าทีมเป็น B และคะแนน < 20
- Good_B ถ้าทีมเป็น B และคะแนน ≥ 20
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อทำสิ่งนี้:
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
คอลัมน์ใหม่ที่เรียกว่า คลาส จะแสดงอันดับของผู้เล่นแต่ละคนตามค่าในคอลัมน์ ทีม และ คะแนน
หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน NumPy select() ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ในแพนด้า:
Pandas: วิธีสร้างคอลัมน์บูลีนตามเงื่อนไข
Pandas: วิธีนับค่าในคอลัมน์ที่มีเงื่อนไข
Pandas: วิธีใช้ Groupby และนับแบบมีเงื่อนไข