แนวคิด
DataFrame.query(expr) กรองแถวด้วย expression string อ่านง่ายกว่า boolean indexing สำหรับเงื่อนไขซับซ้อน
ตัวอย่างโค้ด
import pandas as pd
df = pd.DataFrame({
"Product": ["SmartTV", "PenDrive", "Speaker", "Earphone"],
"Opening_Stock": [300, 700, 1200, 1500],
"Closing_Stock": [200, 500, 1000, 900]
})
print("DataFrame:\n", df)
# Query: Opening_Stock >= 500 AND Closing_Stock < 1000 AND Product เริ่มต้นด้วย 'P'
queried = df.query('Opening_Stock >= 500 and Closing_Stock < 1000 and Product.str.startswith("P")')
print("\nQuery result:\n", queried)
ผลลัพธ์
DataFrame:
Closing_Stock Opening_Stock Product
0 200 300 SmartTV
1 500 700 PenDrive
2 1000 1200 Speaker
3 900 1500 Earphone
Query result:
Closing_Stock Opening_Stock Product
1 500 700 PenDrive
Syntax สำคัญ
- ชื่อคอลัมน์ที่มีช่องว่าง/ตัวอักษรพิเศษ ใช้ backtick:
`Column Name` - เข้าถึง string methods:
Product.str.startswith("P") - ใช้ตัวแปรภายนอก:
@variable_name(เช่น@threshold) - operators:
and,or,not,in,==,!=,>,<ฯลฯ
ประสิทธิภาพ
query() ใช้ numexpr engine (ถ้ามี) เร็วกว่า boolean indexing สำหรับ DataFrame ใหญ่ (>100k rows)