我有一个Pandas数据框架(df),它有一个日期索引和1,000行,其中一行看起来像这样:
SPY 262.408051
shrtAvg 262.861718
signal True
Name: 2019-03-22 00:00:00, dtype: object
我想做一个计算,创建一个新的列的基础上df.信号像这样。
df['distance'] = if df.signal == True, df.SPY - df.average, df.average = df.SPY
但无论我怎么尝试,总是得到这个错误:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我已经对.bool、.apply、np.where和loc进行了trued,但都无效。例如:
`df['distance'] = np.where(df.signal, df.SPY - df.shrtAVG, df.shrtAVG -df.SPY)`
我的问题是,如何基于以布尔检查为根的计算来创建新列?
1条答案
按热度按时间njthzxwz1#
使用
.loc[]
可以分两步完成:或者,您可以使用
.apply()
一步完成: