使用 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 百分比变化函数来实现同样的效果。