Beh*_*dad 1 python dataframe pandas
我有一个股票数据框:
Open High Low Close Volume rb us \
0 1.20821 1.20821 1.20793 1.20794 138.96 0.022347 100.000000
1 1.20794 1.20795 1.20787 1.20788 119.61 0.004967 85.714286
2 1.20788 1.20793 1.20770 1.20779 210.42 0.007451 64.285714
3 1.20779 1.20791 1.20779 1.20789 77.51 0.008280 83.333333
4 1.20789 1.20795 1.20789 1.20792 56.97 0.002484 50.000000
ls color
0 96.428571 black
1 85.714286 black
2 50.000000 black
3 100.000000 white
4 100.000000 white
Run Code Online (Sandbox Code Playgroud)
我想将当前行数据与前一行数据进行比较,如下所示:
if(df['color'] == df['color'].shift(-1)):
if((df['Close'] >= df['Open'].shift(-1) and df['Open']>=df['Close'].shift(-1)):
df['Position'] = UP
if((df['Close'] < df['Open'].shift(-1) and df['Open']<=df['Close'].shift(-1)):
df['Position'] = DOWN
Run Code Online (Sandbox Code Playgroud)
还有更多 IF 条件......
无法比较数据
np.where(condition,TRUE,FALSE)
Run Code Online (Sandbox Code Playgroud)
因为我的算法中有很多条件。这只是其中的一部分。
我如何进行这些条件检查?
你需要:
df['Position'] = np.where((df['Volume'] > df['Volume'].shift(-1)) & ((df['Close'] >= df['Close'].shift(-1)) & (df['Open'] <= df['Open'])),"UP","DOWN")
Run Code Online (Sandbox Code Playgroud)
输出:
Open High Low Close Volume Position
0 1.20821 1.20821 1.20793 1.20794 138.96 UP
1 1.20794 1.20795 1.20787 1.20788 119.61 DOWN
2 1.20788 1.20793 1.20770 1.20779 210.42 DOWN
3 1.20779 1.20791 1.20779 1.20789 77.51 DOWN
4 1.20789 1.20795 1.20789 1.20792 56.97 DOWN
Run Code Online (Sandbox Code Playgroud)