基于if语句和其他列的新数据框列

2024-04-28 18:10:56 发布

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

我正在处理以下数据帧,称为df_atr_check:

Symbol  Average Price   ATR Quantity
SBUX          56          2       100
AAPL         150          3      -200
GOOG         700          4       300

我试图在我的数据框中创建一个名为“精神停止”的新列。在

情况非常直接: 如果数量大于等于0,则心理止损值为“平均价格”—“ATR”,否则为“平均价格”+“ATR”。在

我尝试在这里使用Lambda函数,但是它没有为我返回值。请告诉我我做错了什么。在

^{pr2}$

谢谢


Tags: 数据精神dfcheck情况symbolpricequantity
2条回答

我想出来了。在

我真傻。无论如何谢谢你!在

    df_atr_check["Mental Stop"] = df_atr_check.transform(lambda x: (x["Average Price"] - x["ATR Multiple"]) \
    if x["Quantity"] > 0 else (x["Average Price"] + x["ATR Multiple"]), axis=1)

列表理解对于这样的情况非常有用,前提是if条件不会变得太复杂。Lamdas也会达到同样的目的,但是列表理解更容易阅读(在我看来)。在

试试这个。。。在

df_atr_check['Mental Stop'] = [x - y if z > 0 else x + y for x,y,z in zip(df_atr_check['Average Price'], df_atr_check['ATR Multiple'], df_atr_check['Quantity'])]

相关问题 更多 >