วิธีใช้ตัวกรอง “not in” ใน pandas (พร้อมตัวอย่าง)


คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อดำเนินการกรอง “NOT IN” ใน Pandas DataFrame:

 df[ ~ df[' col_name ']. isin (values_list)]

โปรดทราบว่าค่าใน Values_list อาจเป็นค่าตัวเลขหรือค่าอักขระก็ได้

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่างที่ 1: ดำเนินการตัวกรอง “NON IN” ด้วยคอลัมน์

รหัสต่อไปนี้แสดงวิธีการกรอง DataFrame ของ pandas สำหรับแถวที่ชื่อทีมไม่อยู่ในรายชื่อ:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#define list of teams we don't want
values_list = [' A ', ' B ']

#filter for rows where team name is not in list
df[ ~ df[' team ']. isin (values_list)]

        team points assists rebounds
6 C 25 9 9
7 C 29 4 12

และโค้ดต่อไปนี้แสดงวิธีการกรอง DataFrame ของ pandas สำหรับแถวที่คอลัมน์ “points” ไม่มีค่าที่แน่นอน:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#define list of values we don't want
values_list = [12, 15, 25]

#filter for rows where team name is not in list
df[ ~ df[' team ']. isin (values_list)]

	team points assists rebounds
3 B 14 9 6
4 B 19 12 6
5 B 23 9 5
7 C 29 4 12

ตัวอย่างที่ 2: ดำเนินการตัวกรอง “NON IN” โดยมีหลายคอลัมน์

รหัสต่อไปนี้แสดงวิธีการกรอง DataFrame ของ pandas สำหรับแถวที่ชื่อทีมบางชื่อไม่อยู่ในคอลัมน์ใดคอลัมน์หนึ่ง:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' star_team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' backup_team ': ['B', 'B', 'C', 'C', 'D', 'D', 'D', 'E'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#define list of teams we don't want
values_list = [' C ', ' E ']

#filter for rows where team name is not in one of several columns
df[ ~ df[[' star_team ', ' backup_team ']]. isin (values_list). any (axis= 1 )] 

        star_team backup_team points assists rebounds
0 A B 25 5 11
1 A B 12 7 8
4 B D 19 12 6
5 B D 23 9 5

โปรดทราบว่าเราได้กรองทุกแถวที่ทีม “C” หรือ “E” ปรากฏในคอลัมน์ “star_team” หรือในคอลัมน์ “backup_team”

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

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

วิธีใช้ “Is Not Null” ใน Pandas
วิธีกรอง Pandas DataFrame ตามค่าคอลัมน์
วิธีกรองแถว Pandas DataFrame ตามวันที่
วิธีกรอง Pandas DataFrame ในหลายเงื่อนไข

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

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