欄位約束

設定單一欄位的值域限制,使用字串表達式定義約束條件。

使用範例

請點擊下方按鈕在 Colab 中執行範例:

Open In Colab

field_constraints:
  - "age >= 18 & age <= 65"                                 # 年齡限制在 18-65 歲
  - "hours-per-week >= 20 & hours-per-week <= 60"           # 每週工時限制在 20-60 小時
  - "income == '<=50K' | (age > 50 & hours-per-week < 40)"  # 低收入或年長且工時少
  - "native-country IS NOT 'United-States'"                 # 非美國籍
  - "occupation IS pd.NA"                                   # 職業資訊遺失
  - "education == 'Doctorate' & income == '>50K'"           # 博士學位必須高收入
  - "(race != 'White') == (income == '>50K')"               # 非白人種與高收入的互斥檢查
  - "(marital-status == 'Married-civ-spouse' & hours-per-week > 40) | (marital-status == 'Never-married' & age < 30)" # 複雜的邏輯組合

語法格式

比較運算子

- "field_name > value"   # 大於(數值)
- "field_name >= value"  # 大於等於(數值)
- "field_name == value"  # 等於(數值、文字)
- "field_name != value"  # 不等於(數值、文字)
- "field_name < value"   # 小於(數值)
- "field_name <= value"  # 小於等於(數值)

邏輯運算子

- "field_name > value1 & field_name < value2"        # AND
- "field_name == 'value1' | field_name == 'value2'"  # OR
- "(condition1 & condition2) | condition3"           # 括號優先級

空值檢查

- "field_name IS pd.NA"      # 欄位為空值
- "field_name IS NOT pd.NA"  # 欄位不為空值

日期比較

- "date_field >= DATE('2020-01-01')"  # 日期大於等於 2020-01-01

運算子優先級

優先級運算子說明
1(最高)()括號
2>, >=, ==, !=, <, <=, IS, IS NOT比較運算子
3&邏輯 AND
4(最低)|邏輯 OR

說明:比較運算子優先於邏輯運算子(AND、OR)。這意味著 age >= 20 & age <= 60 會被正確解析為 (age >= 20) & (age <= 60)

建議:使用括號明確指定優先級,避免歧義。

注意事項

  • 每個約束必須用引號包圍成字串
  • 字串值必須加單引號"field == 'value'"
    • 外層雙引號包裹整個約束表達式
    • 內層單引號表示字串字面值(如 '<=50K''>50K'
    • 即使字串字面值包含運算符(如 <=>),解析器也能正確處理
    • 範例:"income == '<=50K'""status == '>active'""country == 'United-States'"
  • 空值檢查使用 ISIS NOT,不用 ==!=
  • 不支援跨欄位運算(如 field1 + field2 > 100