วิธีสร้างคอลัมน์ใหม่ตามเงื่อนไขใน pandas


บ่อยครั้งที่คุณอาจต้องการสร้างคอลัมน์ใหม่ใน DataFrame ของ pandas ตามเงื่อนไขบางประการ

บทช่วยสอนนี้มีตัวอย่างหลายประการเกี่ยวกับวิธีการทำเช่นนี้โดยใช้ DataFrame ต่อไปนี้:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
                   'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#view DataFrame
df

rating points assists rebounds
0 90 25 5 11
1 85 20 7 8
2 82 14 7 10
3 88 16 8 6
4 94 27 5 6
5 90 20 7 9
6 76 12 6 6
7 75 15 9 10
8 87 14 9 10
9 86 19 5 7

ตัวอย่างที่ 1: สร้างคอลัมน์ใหม่ที่มีค่าไบนารี

รหัสต่อไปนี้แสดงวิธีการสร้างคอลัมน์ใหม่ที่เรียกว่า “ดี” โดยที่ค่าเป็น “ใช่” หากคะแนนในแถวที่กำหนดมากกว่า 20 และ “ไม่” มิฉะนั้น:

 #create new column titled 'Good'
df['Good'] = np. where (df['points']>20, ' yes ', ' no ')

#view DataFrame 
df

        rating points assists rebounds Good
0 90 25 5 11 yes
1 85 20 7 8 no
2 82 14 7 10 no
3 88 16 8 6 no
4 94 27 5 6 yes
5 90 20 7 9 no
6 76 12 6 6 no
7 75 15 9 10 no
8 87 14 9 10 no
9 86 19 5 7 no

ตัวอย่างที่ 2: สร้างคอลัมน์ใหม่ที่มีหลายค่า

รหัสต่อไปนี้แสดงวิธีการสร้างคอลัมน์ใหม่ที่เรียกว่า “ดี” โดยที่ค่าคือ:

  • “ใช่” ถ้าคะแนน ≥ 25
  • “อาจจะ” ถ้า 15 ≤ จุด < 25
  • “ไม่” ถ้าคะแนน < 15
 #define function for classifying players based on points
def f(row):
    if row['points'] < 15:
        val = 'no'
    elif row['points'] < 25:
        val = 'maybe'
    else :
        val = 'yes'
    return val

#create new column 'Good' using the function above
df['Good'] = df. apply (f, axis=1)

#view DataFrame 
df

        rating points assists rebounds Good
0 90 25 5 11 yes
1 85 20 7 8 maybe
2 82 14 7 10 no
3 88 16 8 6 maybe
4 94 27 5 6 yes
5 90 20 7 9 maybe
6 76 12 6 6 no
7 75 15 9 10 maybe
8 87 14 9 10 no
9 86 19 5 7 maybe

ตัวอย่างที่ 3: สร้างคอลัมน์ใหม่โดยยึดตามการเปรียบเทียบกับคอลัมน์ที่มีอยู่

รหัสต่อไปนี้แสดงวิธีการสร้างคอลัมน์ใหม่ที่เรียกว่า “assist_more” โดยที่ค่าคือ:

  • “ใช่” ถ้าแอสซิสต์ > รีบาวด์
  • ‘ไม่’ เป็นอย่างอื่น
 #create new column titled 'assist_more'
df['assist_more'] = np. where (df['assists']>df['rebounds'], ' yes ', ' no ')

#view DataFrame 
df

        rating points assists rebounds assist_more
0 90 25 5 11 no
1 85 20 7 8 no
2 82 14 7 10 no
3 88 16 8 6 yes
4 94 27 5 6 no
5 90 20 7 9 no
6 76 12 6 6 no
7 75 15 9 10 no
8 87 14 9 10 no
9 86 19 5 7 no

คุณสามารถค้นหาบทช่วยสอน Python เพิ่มเติมได้ ที่นี่

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

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