蟒蛇。在Pandas数据帧中使用Lambda函数的IF条件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蟒蛇。在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)...否则df.uptail =(df.high - df.open)

怎么能把它搞砸了?

答案

np.where更适合这里。

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

看起来你想要uptailclose - 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']

以上是关于蟒蛇。在Pandas数据帧中使用Lambda函数的IF条件的主要内容,如果未能解决你的问题,请参考以下文章

python 将函数应用于pandas数据帧中的两列

对 Pandas 数据框逐元素应用条件

了解pandas中的lambda函数

在Pandas中使用Apply Lambda函数具有多个if语句

支持 Nan 的 Pandas Lambda 函数

PYTHON Pandas - 根据其他数据帧中的值对数据帧使用 Pandas 样式