2024-04-28 18:10:56 发布
网友
我正在处理以下数据帧,称为df_atr_check:
Symbol Average Price ATR Quantity SBUX 56 2 100 AAPL 150 3 -200 GOOG 700 4 300
我试图在我的数据框中创建一个名为“精神停止”的新列。在
情况非常直接: 如果数量大于等于0,则心理止损值为“平均价格”—“ATR”,否则为“平均价格”+“ATR”。在
我尝试在这里使用Lambda函数,但是它没有为我返回值。请告诉我我做错了什么。在
谢谢
我想出来了。在
我真傻。无论如何谢谢你!在
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'])]
我想出来了。在
我真傻。无论如何谢谢你!在
列表理解对于这样的情况非常有用,前提是if条件不会变得太复杂。Lamdas也会达到同样的目的,但是列表理解更容易阅读(在我看来)。在
试试这个。。。在
相关问题 更多 >
编程相关推荐