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 และนับแบบมีเงื่อนไข

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *