使用 Pandas 操作 CSV 文件:识别列中的值并使用同一行其他列中的数据
Manipulating a CSV File using Pandas: Identifying a value in a column and using data from other columns of the same row
使用 Pandas,除了 OHLC 列之外,我还在 CSV 文件中创建了两列。这是数据框的样子:
Date Close ... Return bullishSignal
Symbol ...
SPY 2010-01-01 111.44 ... NaN False
SPY 2010-01-04 113.33 ... NaN False
SPY 2010-01-25 109.77 ... 0.017582 False
SPY 2010-01-26 109.31 ... -0.000915 False
SPY 2010-01-27 109.83 ... -0.000546 True
SPY 2010-01-28 108.57 ... 0.006816 False
SPY 2010-01-29 107.39 ... 0.022721 False
我的 objective 是计算从出现看涨信号的日期(第 0 天)起的第 2 天 return:( Close (Day 2) - Open (Day 1) ) / Open (第 1 天)。
我有办法做到这一点吗?
移动到 pandas。然后,您可以使用命令 .shift(1)
转置第 1 行,使用 .shift(-1)
.
命令转置第 1 行
x1 # Original df
0 0
1 1
2 2
3 3
4 4
df.x2 = df.x1.shift(1) # Shift down
x1 x2
0 0 NaN
1 1 0
2 2 1
3 3 2
4 4 3
df.x2 = df.x1.shift(-1) # Shift up
x1 x2
0 0 1
1 1 2
2 2 3
3 3 4
4 4 NaN
应用shift()
,您将所有相关值都放在一行中,然后就可以应用按列操作:
from __future__ import division
df['Close_Next_Day'] = df['Close'].shift(-1)
df = df[df.bullishSignal == True] # Filter to bullish
df['2dayReturn_bullish'] = (df['Close_Next_Day'] - df['Open']) / df['Open'])
您可以使用 pandas 百分比变化函数来实现同样的效果。
使用 Pandas,除了 OHLC 列之外,我还在 CSV 文件中创建了两列。这是数据框的样子:
Date Close ... Return bullishSignal
Symbol ...
SPY 2010-01-01 111.44 ... NaN False
SPY 2010-01-04 113.33 ... NaN False
SPY 2010-01-25 109.77 ... 0.017582 False
SPY 2010-01-26 109.31 ... -0.000915 False
SPY 2010-01-27 109.83 ... -0.000546 True
SPY 2010-01-28 108.57 ... 0.006816 False
SPY 2010-01-29 107.39 ... 0.022721 False
我的 objective 是计算从出现看涨信号的日期(第 0 天)起的第 2 天 return:( Close (Day 2) - Open (Day 1) ) / Open (第 1 天)。 我有办法做到这一点吗?
移动到 pandas。然后,您可以使用命令 .shift(1)
转置第 1 行,使用 .shift(-1)
.
x1 # Original df
0 0
1 1
2 2
3 3
4 4
df.x2 = df.x1.shift(1) # Shift down
x1 x2
0 0 NaN
1 1 0
2 2 1
3 3 2
4 4 3
df.x2 = df.x1.shift(-1) # Shift up
x1 x2
0 0 1
1 1 2
2 2 3
3 3 4
4 4 NaN
应用shift()
,您将所有相关值都放在一行中,然后就可以应用按列操作:
from __future__ import division
df['Close_Next_Day'] = df['Close'].shift(-1)
df = df[df.bullishSignal == True] # Filter to bullish
df['2dayReturn_bullish'] = (df['Close_Next_Day'] - df['Open']) / df['Open'])
您可以使用 pandas 百分比变化函数来实现同样的效果。