วิธีกรอง 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: วิธีแปลงค่าบูลีนเป็นค่าจำนวนเต็ม