使用pandas(python)基于以前的值添加列

2024-10-01 22:33:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的(ohlcv)数据框中添加一个名为bullTrend的新列,该数据框基于两列的先前值:

  • 如有需要,;前11行收盘价高于均线->;牛市趋势变化值为True
  • 如有需要,;前11行收盘价低于均线->;牛市趋势变化值为False
  • 第一价值观->;牛市趋势变化对NaN的价值
  • 不包括最后一行

数据集:

             timestamp    open    high     low   close    volume          ema
    0    1591162860000  9490.0  9489.5  9489.5  9489.5       1.0  9489.500000
    1    1591162920000  9489.5  9490.0  9490.0  9490.0     406.0  9489.751250
    2    1591162980000  9490.0  9490.0  9490.0  9490.0     488.0  9489.834997
    3    1591163040000  9490.0  9497.0  9489.5  9489.5   12798.0  9489.749988
    4    1591163100000  9489.5  9497.0  9489.0  9497.0    1866.0  9491.229134
    ..             ...     ...     ...     ...     ...       ...          ...
    495  1591192560000  9524.5  9524.5  9524.0  9524.5    1727.0  9564.513010
    496  1591192620000  9524.5  9524.5  9523.0  9523.0  179978.0  9564.097058
    497  1591192680000  9523.0  9524.0  9523.0  9524.0     582.0  9563.695321
    498  1591192740000  9524.0  9523.0  9523.0  9523.0       2.0  9563.287617
    499  1591192800000  9523.0  9524.0  9523.0  9524.0    1324.0  9562.894044

列的示例:

     bullTrend 
0    NaN
1    NaN
2    NaN
3    NaN
4    True
..             ...
495  True
496  True
497  False
498  False
499  False

Tags: 数据gtfalsetrueopennan趋势timestamp
1条回答
网友
1楼 · 发布于 2024-10-01 22:33:44

这应该起作用:

def isBull(row):
    idx = row.name
    if idx in idxs:
        return row['eta'] < min([df.at[idx-i, 'close'] for i in range(12)])
    else:
        return np.nan

idxs = df.index[12:-1]
df['bullTrend'] = df.apply(isBull, axis=1)

相关问题 更多 >

    热门问题