【发布时间】:2018-12-26 17:56:23
【问题描述】:
我有一个如下所示的数据框。最右边的两列是我想要的列:
Open Close open_to_close close_to_next_open open_desired close_desired
0 0 0 3 0 0
0 0 4 8 3 7
0 0 1 1 15 16
计算如下:
open_desired = close_desired(prior row) + close_to_next_open(prior row)
close_desired = open_desired + open_to_close
如何以循环方式实现以下内容?我正在尝试这样做直到最后一行。
df = pd.DataFrame({'open': [0,0,0], 'close': [0,0,0], 'open_to_close': [0,4,1], 'close_to_next_open': [3,8,1]})
df['close_desired'] = 0
df['open_desired'] = 0
##First step is to create open_desired in current row which is dependent on close_desired in previous row
df['open_desired'] = df['close_desired'].shift() + df['close_to_next_open'].shift()
##second step is to create close_desired in current row which is dependent on open_desired in current row
df['close_desired'] = df['open_desired'] + df['open_to_close']
df.fillna(0,inplace=True)
【问题讨论】:
-
有什么问题?
-
我发现了两个问题。您需要初始化列“close_desired”,并且在第二行代码中您有一个错字(“close”应该是“close”)。最后做一个
df.fillna(0,inplace=True)。 -
@xyzjayne 谢谢,做了第二行编辑。我是 python 新手。如何初始化“close_desired”?
-
df['close_desired'] = 0 -
没有该行,df 在第一行有两个 NaN 条目,因为 shift() 为第一行生成 NaN 值。 fillna 用零替换 NaN。
标签: list pandas numpy for-loop