2025年9月10日 星期三

條件篩選賦值

 

1️⃣ 範例資料

import pandas as pd data = pd.DataFrame({ 'Close': [100, 102, 101, 105, 107], 'MA5': [None, None, 101, 103, 104], 'MA20': [None, None, 100, 102, 103] })

2️⃣ 條件篩選賦值

假設規則:

  • 當 MA5 > MA20 → Signal = 1(買入)

  • 當 MA5 < MA20 → Signal = -1(賣出)

data['Signal'] = 0 # 先給初值 # MA5 > MA20 → 買入 data.loc[data['MA5'] > data['MA20'], 'Signal'] = 1 # MA5 < MA20 → 賣出 data.loc[data['MA5'] < data['MA20'], 'Signal'] = -1 print(data)

3️⃣ 輸出結果

Close MA5 MA20 Signal 0 100 NaN 100.0 0 1 102 NaN 100.0 0 2 101 101.0 100.0 1 3 105 103.0 102.0 1 4 107 104.0 103.0 1

🔹 解說

  • data.loc[條件, '欄位'] = 值
    → 先用條件篩選出符合的列,再把指定欄位賦值。

  • 可以多次使用 loc 針對不同條件賦不同值。

  • 這是 Pandas 常用的策略訊號生成方法。

 import pandas as pd

data = pd.DataFrame({
    'Close': [100, 102, 101, 105, 107],
    'MA5': [None, None, 101, 103, 104],
    'MA20': [None, None, 100, 102, 103]
})

data['Signal'] = 0  # 先給初值

# MA5 > MA20 → 買入
data.loc[data['MA5'] > data['MA20'], 'Signal'] = 1

# MA5 < MA20 → 賣出
data.loc[data['MA5'] < data['MA20'], 'Signal'] = -1

print(data)

沒有留言:

張貼留言