Python。在 Pandas 数据框中使用 Lambda 函数的 IF 条件

df = pd.read_csv('data/eurusd_dukascopy.csv')

df.columns = ['timestamp', 'open', 'high', 'low', 'close', 'volume']

df['oc'] = df.close - df.open


df['uptail'] = df['oc'].apply(lambda x: (df.high - df.close) if x >= 0 else (df.high - df.open))

给出错误:ValueError:错误的项目数通过 2963,放置意味着 1


我只想执行以下操作:如果df.oc是正数,则df.uptail = (df.high - df.close) ...else df.uptail = (df.high - df.open)


我怎样才能解决这个问题?


翻翻过去那场雪
浏览 589回答 2
2回答

哆啦的时光机

np.where更适合这里。df['uptail'] = np.where(df.close-df.open>=0, df.high-df.close, df.high-df.open)

蓝山帝景

看起来您想要uptail的是,close - open如果这是正数,high - open如果close - open是负数或 0。您可以使用以下代码实现这一点:df['uptail'] = df.high - df.opendf.loc[df.close > df.open, 'uptail'] = \    df.loc[df.close > df.open, 'high'] - df.loc[df.close > df.open, 'close']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python