Pandas: วิธีใช้ isin สำหรับหลายคอลัมน์


คุณสามารถใช้วิธีการต่อไปนี้กับฟังก์ชัน pandas isin() เพื่อกรองตามหลายคอลัมน์ใน DataFrame ของ pandas:

วิธีที่ 1: กรองเมื่อหลายคอลัมน์มีค่าเฉพาะเจาะจงเท่ากัน

 df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). all (axis= 1 )]

ตัวอย่างนี้กรอง DataFrame สำหรับแถวที่คอลัมน์ ทีม เท่ากับ “A” และ คอลัมน์ ตำแหน่ง เท่ากับ “Guard”

วิธีที่ 2: กรองโดยที่อย่างน้อยหนึ่งคอลัมน์เท่ากับค่าที่ระบุ

 df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). any (axis= 1 )]

ตัวอย่างนี้กรอง DataFrame สำหรับแถวที่คอลัมน์ ทีม เท่ากับ “A” หรือ คอลัมน์ ตำแหน่ง เท่ากับ “Guard”

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับ Pandas DataFrame ต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['Guard', 'Guard', 'Forward', 'Forward',
                                'Guard', 'Guard', 'Forward', 'Forward'],
                   ' points ': [11, 18, 10, 22, 26, 35, 19, 12]})
                   
#view DataFrame
print (df)

  team position points
0 A Guard 11
1 A Guard 18
2 A Forward 10
3 A Forward 22
4 B Guard 26
5 B Guard 35
6 B Forward 19
7 B Forward 12

ตัวอย่างที่ 1: กรองโดยที่หลายคอลัมน์เท่ากับค่าเฉพาะ

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อกรอง DataFrame ให้มีเพียงแถวที่คอลัมน์ ทีม เท่ากับ “A” และ คอลัมน์ ตำแหน่ง เท่ากับ “Guard”

 #filter rows where team column is 'A' and position column is 'Guard'
df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). all (axis= 1 )]

#view filtered DataFrame
print (df)

  team position points
0 A Guard 11
1 A Guard 18

โปรดทราบว่าเฉพาะแถวที่คอลัมน์ ทีม เท่ากับ “A” และ คอลัมน์ ตำแหน่ง เท่ากับ “Guard” เท่านั้นที่จะยังคงอยู่ใน DataFrame ที่กรอง

ตัวอย่างที่ 2: กรองโดยที่อย่างน้อยหนึ่งคอลัมน์เท่ากับค่าที่ระบุ

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อกรอง DataFrame ให้มีเพียงแถวที่คอลัมน์ ทีม เท่ากับ “A” หรือ คอลัมน์ ตำแหน่ง เท่ากับ “Guard”

 #filter rows where team column is 'A' or position column is 'Guard'
df = df[df[[' team ', ' position ']]. isin ([' A ',' Guard ']). any (axis= 1 )]

#view filtered DataFrame
print (df)

  team position points
0 A Guard 11
1 A Guard 18
2 A Forward 10
3 A Forward 22
4 B Guard 26
5 B Guard 35

โปรดทราบว่าเฉพาะแถวที่คอลัมน์ ทีม เท่ากับ “A” หรือ คอลัมน์ ตำแหน่ง เท่ากับ “Guard” เท่านั้นที่จะยังคงอยู่ใน DataFrame ที่กรอง

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน pandas isin() ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ในแพนด้า:

Pandas: วิธีเพิ่มตัวกรองลงในตารางสาระสำคัญ
นุ่น: วิธีกรอง “ไม่มี”
Pandas: วิธีกรองแถวที่มีสตริงเฉพาะ

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

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