Pandas: วิธีเลือกคอลัมน์ตามเงื่อนไข


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

วิธีที่ 1: เลือกคอลัมน์ที่มีอย่างน้อยหนึ่งแถวที่ตรงตามเงื่อนไข

 #select columns where at least one row has a value greater than 2
df. loc [:, (df > 2 ). any ()]

วิธีที่ 2: เลือกคอลัมน์ที่ทุกแถวตรงตามเงื่อนไข

 #select columns where all rows have a value greater than 2
df. loc [:, (df > 2 ). all ()]

วิธีที่ 3: เลือกคอลัมน์ที่มีอย่างน้อยหนึ่งแถวที่ตรงตามเงื่อนไขหลายข้อ

 #select columns where at least one row has a value between 10 and 15
df. loc [:, ((df>= 10 ) & (df<= 15 )). any ()]

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' apples ': [7, 3, 3, 4, 3],
                   ' oranges ': [2, 0, 2, 0, 1],
                   ' bananas ': [5, 0, 4, 0, 12]},
                    index=[' Farm1 ',' Farm2 ',' Farm3 ',' Farm4 ',' Farm5 '])

#view DataFrame
print (df)

       apples oranges bananas
Farm1 7 2 5
Farm2 3 0 0
Farm3 3 2 4
Farm4 4 0 0
Farm5 3 1 12

ตัวอย่างที่ 1: เลือกคอลัมน์ที่มีอย่างน้อยหนึ่งแถวตรงตามเงื่อนไข

เราสามารถใช้โค้ดต่อไปนี้เพื่อเลือกคอลัมน์จาก DataFrame โดยที่อย่างน้อยหนึ่งแถวในคอลัมน์มีค่ามากกว่า 2:

 #select columns where at least one row has a value greater than 2
df. loc [:, (df > 2 ). any ()]

	apples bananas
Farm1 7 5
Farm2 3 0
Farm3 3 4
Farm4 0 0
Farm5 3 12

โปรดทราบว่าคอลัมน์ แอปเปิ้ล และ กล้วย จะถูกส่งกลับทั้งคู่ เนื่องจากคอลัมน์เหล่านี้มีอย่างน้อยหนึ่งแถวที่มีค่ามากกว่า 2

ตัวอย่างที่ 2: เลือกคอลัมน์ที่ทุกแถวตรงตามเงื่อนไข

เราสามารถใช้โค้ดต่อไปนี้เพื่อเลือกคอลัมน์จาก DataFrame โดยที่แต่ละแถวในคอลัมน์มีค่ามากกว่า 2:

 #select columns where every row has a value greater than 2
df. loc [:, (df > 2 ). all ()]

	apples
Farm1 7
Farm2 3
Farm3 3
Farm4 4
Farm5 3

โปรดทราบว่าระบบจะส่งกลับเฉพาะคอลัมน์ Apples เนื่องจากเป็นคอลัมน์เดียวที่แต่ละแถวในคอลัมน์มีค่ามากกว่า 2

ตัวอย่างที่ 3: เลือกคอลัมน์ที่มีอย่างน้อยหนึ่งแถวตรงตามเงื่อนไขหลายประการ

เราสามารถใช้โค้ดต่อไปนี้เพื่อเลือกคอลัมน์จาก DataFrame โดยที่อย่างน้อยหนึ่งแถวในคอลัมน์มีค่าระหว่าง 10 ถึง 15:

 #select columns where every row has a value greater than 2
df. loc [:, ((df>= 10 ) & (df<= 15 )). any ()]

	bananas
Farm1 5
Farm2 0
Farm3 4
Farm4 0
Farm5 12

โปรดทราบว่าจะส่งคืนค่าเฉพาะคอลัมน์ Bananas เนื่องจากเป็นคอลัมน์เดียวที่มีอย่างน้อยหนึ่งแถวในคอลัมน์ที่มีค่าระหว่าง 10 ถึง 15

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

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

วิธีเลือกคอลัมน์ตามชื่อใน Pandas
วิธีเลือกคอลัมน์ตามดัชนีใน Pandas
วิธีเลือกคอลัมน์ที่มีสตริงเฉพาะใน Pandas

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

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