为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻翻过去那场雪 2021-11-30 17:00:54
df = pd.read_csv('data/eurusd_dukascopy.csv')df.columns = ['timestamp', 'open', 'high', 'low', 'close', 'volume']df['oc'] = df.close - df.opendf['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)我怎样才能解决这个问题?
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

np.where更适合这里。

df['uptail'] = np.where(df.close-df.open>=0, df.high-df.close, df.high-df.open)


查看完整回答
反对 回复 2021-11-30
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

看起来您想要uptail的是,close - open如果这是正数,high - open如果close - open是负数或 0。


您可以使用以下代码实现这一点:


df['uptail'] = df.high - df.open

df.loc[df.close > df.open, 'uptail'] = \

    df.loc[df.close > df.open, 'high'] - df.loc[df.close > df.open, 'close']


查看完整回答
反对 回复 2021-11-30
  • 2 回答
  • 0 关注
  • 588 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信