首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError:系列的真值是不明确的。在DataFrame中用np.where创建新系列

ValueError:系列的真值是不明确的。在DataFrame中用np.where创建新系列
EN

Stack Overflow用户
提问于 2022-02-17 19:54:10
回答 1查看 37关注 0票数 1

我试图基于两个条件语句在dataframe中创建一个新列。如果满足这两种条件,则新列应模仿股票“返回”列。如果他们不满意,新列应该有0。请帮帮忙。

股票‘喜闻乐见’=np.where(股票‘收盘’<股票‘2天’和股票‘收盘’<股票‘5天’),[股票‘回报’,np.nan]

EN

回答 1

Stack Overflow用户

发布于 2022-02-17 20:14:28

我认为在创建基于其他列的新列时,不应该使用where

分配方法更合适。

下面是文档中的一个快速示例:

代码语言:javascript
复制
>>> df.assign(temp_f=df['temp_c'] * 9 / 5 + 32)
>>>          temp_c  temp_f
>>> Portland    17.0    62.6
>>> Berkeley    25.0    77.0

在你的例子中,你首先需要创建一个熊猫函数,它将贯穿每个细胞。因为您的代码每次都试图读取整个列,因此出现了错误。

因此,在您的例子中,这个片段应该可以做到:

代码语言:javascript
复制
strat1_return = stock.apply(
    lambda x: x['return'] if x['close'] < x['2_dayma'] and x['close'] < x['5_dayma'] else np.nan)
)
stock = stock.assign(strat1_return=strat1_return.values)

或者没有assign

代码语言:javascript
复制
stock['strat1_return'] = stock.apply(
    lambda x: x['return'] if x['close'] < x['2_dayma'] and x['close'] < x['5_dayma'] else np.nan)
)

使用applyassign创建新列的区别可以在本回答中找到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71164593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档