2015-01-08 4 views
0

나는 거래 전략을위한 몇 가지 사용자 정의 계산 열로 구성된 데이터 프레임을 가지고 있습니다. 이 데이터 프레임에 '신호'라는 새 열을 추가하려고합니다.이 열은 0과 1로 구성됩니다 (긴 전략 만 가능). 문 dataframes 효율적하지 않은 경우 나의 이해에서조건부 구문을 기반으로하는 Python Dataframe 새로운 열

if: 
    open_price > low_sigma.shift(1) and high_price > high_sigma.shift(1): 
     signal = 1 
    else: 
     signal = 0 

: 신호는 다음 코드에 생성됩니다,이 코드의 각 항목은 dataframe에서 별도의 컬럼입니다. 또한, 나는 이것을 원하는대로 출력하지 못했습니다. 신호를 생성하여 데이터 프레임에 추가하는 것을 어떻게 권장합니까? 당신은 0과 1로 논리 값을 변환 할 astype를 사용 후, 부울 조건 자체에 df['Signals']를 할당 할 수

답변

0

: 예를 들어

df['Signals'] = (((df['open_price'] > df['low_sigma'].shift(1)) 
    & (df['high_price'] > df['high_sigma'].shift(1))) 
    .astype('int')) 

,

import pandas as pd 
df = pd.DataFrame({ 
    'open_price': [1,2,3,4], 
    'low_sigma': [1,3,2,4], 
    'high_price': [10,20,30,40], 
    'high_sigma': [10,40,20,30]}) 

# high_price high_sigma low_sigma open_price 
# 0   10   10   1   1 
# 1   20   40   3   2 
# 2   30   20   2   3 
# 3   40   30   4   4 

mask = ((df['open_price'] > df['low_sigma'].shift(1)) 
     & (df['high_price'] > df['high_sigma'].shift(1))) 
# 0 False 
# 1  True 
# 2 False 
# 3  True 
# dtype: bool 

df['Signals'] = mask.astype('int') 
print(df) 

high_price high_sigma low_sigma open_price Signals 
0   10   10   1   1  0 
1   20   40   3   2  1 
2   30   20   2   3  0 
3   40   30   4   4  1 
+0

를 산출 저는 아직 파이썬에 익숙하지 않고이 모든 것을 파악하려고합니다. 조건에 df [ 'Signals']를 지정하면 위의 코드가 if 기반 조건을 효과적으로 대체한다는 의미입니까? 위의 조건이 참이면 코드에서 "1"을 할당합니까? – molivizzy

+0

추가 통찰력은 인정 될 것입니다 ... – molivizzy