python - pandas DataFrame - comparing two columns based on condition being true -


i have following pandas data frame:

df = pd.dataframe({'open': [1.20443, 1.20438, 1.20464, 1.20443, 1.20443, 1.2049, 1.20444, 1.20443],                'high': [1.20447, 1.20467, 1.20497, 1.20446, 1.20447, 1.20505, 1.20446, 1.20446],                'low':  [1.20429, 1.20436, 1.20464, 1.20439, 1.20429, 1.20350, 1.20441, 1.20439],                'close': [1.20438, 1.20466, 1.20486, 1.20439, 1.20438, 1.20497, 1.20446, 1.20439],                'support': [1.20346, 1.20346, 1.20361, 1.20363, 1.20362, 1.20364, 1.20367, 1.20360],                'br': [false, false, true, false, false, true, false, false]}) 

what want iterate through column br until true, compare row value of low previous row value of support , iterate through point unit low less support, return true or false if not happen, continue iterating br point left off.

i.e. row 2 br = true compare low row 2 support row 1 until low < support in row 5, continue iterating br row 3.

i can loops , if statements, large dataset , take long time hoping there optimized way pandas can handle this. have tried map , apply can not seem past need iterate on each row item item.

maybe np.where.

df['answer'] = np.where((df['br'] == true) & (df['low'] < df['support']), true,                         np.where((df['br'] == true) & (df['high'] > 1.20504), true,                                  false)) 

or might able combine 1 np.where:

df['answer'] = np.where(((df['br'] == true) & (df['low'] < df['support'])) | (df['br'] == true) & (df['high'] > 1.20504), true,                         false) 

Comments

Popular posts from this blog

php - Wordpress website dashboard page or post editor content is not showing but front end data is showing properly -

How to get the ip address of VM and use it to configure SSH connection dynamically in Ansible -

javascript - Get parameter of GET request -