在 DataFrame 中使用 IF 语句并得到错误:Series 的真值不明确

乔斯蒂尔

我有一个从雅虎金融导入的股票价格和回报数据框架,如下所示。

日期 价格 返回
2019-01-01 54 0.05
2019-02-01 46 -0.14
2019-03-01 48 0.04

其中日期是索引,返回是数字。

我正在尝试创建一个新列,如果第二天的回报为正,则等于 1,如果下一个回报为负,则等于 -1。

我用过

if df['return'].shift(-1) > 0:
  df['Indicator'] = 1
else 
  df['Indicator'] = -1

但是,我得到了上述错误。我曾尝试使用 .all() 但这使得所有指标列都等于 1。即使第二天的回报是负数

所需的输出将是

日期 价格 返回 指标
2019-01-01 54 0.05 -1
2019-02-01 46 -0.14 1
2019-03-01 48 0.04 1

指标栏中的最后一个 1 是假设第二天的回报,2019-04-01 是正数。

有什么建议吗?

谢谢

dkantor

使用 numpy where 函数。它更有效和简单:

import numpy as np
df['Indicator'] = np.where(df['return'].shift(-1)>0,1,-1 )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用数据帧列错误绘制 axvline:ValueError:DataFrame 的真值不明确。

IF语句Panda Dataframe:系列的真值不明确

Teradata插入错误:ValueError:DataFrame的真值不明确

值错误:DataFrame的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()

DataFrame 的真值不明确

Dataframe.isin()给出此错误:DataFrame的真值不明确

Dataframe 的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

ValueError:DataFrame的真值不明确

ValueError:将 lambda 与 loc 一起使用时,Series 的真值不明确

使用if-else创建新列时出现熊猫错误:系列的真值不明确

NumPy错误:包含多个元素的数组的真值不明确。使用a.any()或a.all()

Yahtzee 代码错误:包含多个元素的数组的真值不明确。使用 a.any() 或 a.all()

使用条件语句从pandas df列中减去标量会导致ValueError:Series的真值不明确

Pandas Dataframe ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()

ValueError:DataFrame的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()

错误 -> Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

If语句,ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()

如果语句嵌套在For循环中-获取错误= Series的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()

Matplotlib条形图错误:“具有多个元素的数组的真值不明确。请使用a.any()或a.all()”

GridSearchCV-错误:具有多个元素的数组的真值不明确。使用a.any()或a.all()

遇到错误,系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()

感知器逻辑 OR 值错误:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

直接如果语句获取 ValueError:系列的真值不明确

Series 的真值不明确:value error python

ValueError:使用.apply(lambda)时,系列的真值不明确

使用While循环时系列的真值不明确

Python 错误:包含多个元素的数组的真值不明确

Python 3 Lambda错误:系列的真值不明确

Python 错误中的 For 循环:系列的真值不明确