วิธีกรอง pandas dataframe โดยใช้คอลัมน์บูลีน


คุณสามารถใช้วิธีการต่อไปนี้เพื่อกรองแถวใน DataFrame แพนด้าตามค่าคอลัมน์บูลีน:

วิธีที่ 1: กรอง DataFrame ตามคอลัมน์บูลีน

 #filter for rows where value in 'my_column' is True
df. loc [df. my_column ]

วิธีที่ 2: กรอง DataFrame ตามคอลัมน์บูลีนหลายคอลัมน์

 #filter for rows where value in 'column1' or 'column2' is True
df. loc [df. column1 | df. column2 ]

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
                   ' points ': [18,20, 25, 40, 34, 32, 19],
                   ' all_star ': [True, False, True, True, True, False, False],
                   ' starter ': [False, True, True, True, False, False, False]})

#view DataFrame
print (df)

  team points all_star starter
0 A 18 True False
1 B 20 False True
2 C 25 True True
3 D 40 True True
4 E 34 True False
5 F 32 False False
6 G 19 False False

ตัวอย่างที่ 1: กรอง DataFrame ตามคอลัมน์บูลีน

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อกรอง Pandas DataFrame เพื่อให้มีเฉพาะแถวที่มีค่าในคอลัมน์ all_star เป็น True:

 #filter for rows where 'all_star' is True
df. loc [df. all_star ]

	team points all_star starter
0 A 18 True False
2 C 25 True True
3 D 40 True True
4 E 34 True False

โปรดทราบว่า DataFrame ได้รับการกรองเพื่อให้มีเฉพาะแถวที่มีค่าในคอลัมน์ all_star เป็น True

หากคุณต้องการกรองแถวที่ all_star เป็น False แทน เพียงพิมพ์เครื่องหมายตัวหนอน ( ~ ) หน้าชื่อคอลัมน์:

 #filter for rows where 'all_star' is False
df. loc [ ~ df. all_star ]

        team points all_star starter
1 B 20 False True
5 F 32 False False
6 G 19 False False

ขณะนี้ DataFrame ได้รับการกรองเพื่อให้มีเฉพาะแถวที่มีค่าในคอลัมน์ all_star เป็นเท็จ

ตัวอย่างที่ 2: กรอง DataFrame ตามคอลัมน์บูลีนหลายคอลัมน์

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อกรอง Pandas DataFrame เพื่อให้มีเฉพาะแถวที่มีค่าของคอลัมน์ all_star หรือ คอลัมน์ เริ่มต้น เป็น True:

 #filter for rows where 'all_star' or 'starter' is True
df. loc [df. all_star | df. starter ]

        team points all_star starter
0 A 18 True False
1 B 20 False True
2 C 25 True True
3 D 40 True True
4 E 34 True False

โปรดทราบว่า DataFrame ได้รับการกรองเพื่อให้มีเฉพาะแถวที่มีค่าในคอลัมน์ all_star หรือ คอลัมน์ เริ่มต้น เป็น True

หากคุณต้องการกรองแถวที่มีค่าใน คอลัมน์ all_star และคอลัมน์ เริ่มต้น เป็น True คุณสามารถใช้ตัวดำเนินการ & แทน | ตัวดำเนินการ:

 #filter for rows where 'all_star' and 'starter' is True
df. loc [df. all_star & df. starter ]

	team points all_star starter
2 C 25 True True
3 D 40 True True

ขณะนี้ DataFrame ได้รับการกรองเพื่อให้มีเฉพาะแถวที่มีค่าในคอลัมน์ all_star และ คอลัมน์ เริ่มต้น เป็น True

ที่เกี่ยวข้อง: ความแตกต่างระหว่าง loc และ iloc ที่ Pandas

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

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

Pandas: เลือกแถวจาก DataFrame โดยใช้ชุดบูลีน
Pandas: วิธีสร้างคอลัมน์บูลีนตามเงื่อนไข
Pandas: วิธีแปลงค่าบูลีนเป็นค่าจำนวนเต็ม

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

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