我需要计算给定n天收盘价的损益百分比。 df是数据帧。收盘价就是收盘价
def profit_loss(days):
last = df[-1:]['Close Price']
begin = df[-days:-(days-1)]['Close Price']
return ((last-begin)/last)*100
该函数应该给定所需的百分比。如果给出了天数,该函数将取最后一天的收盘价和最后第n天的收盘价,并计算损益百分比。我的输出将NaN作为输出
profit_loss(7)
输出为
487 NaN
493 NaN
Name: Close Price, dtype: float64
预期输出为-0.0102
。
过去7天的收盘价数据如下:
[970.20,981.75,979.95,980.50,980.45,975.35,979.10]
我相信您获得输出的
NaN
值的原因是last
和begin
变量属于Series
类型。尝试添加.item()
,这将返回float
值不要为了获得单个元素而对数据进行切片(正如Kurt Kline所指出的那样,这会为您提供
Series
),您只需要获得感兴趣的元素:这还修复了一个错误:在原始代码中,如果
days
=1,那么您将在[-1:0]
天内取收盘价,这根本不是一天,因为此切片从最后一个元素(-1)开始,并尝试向下移动到第一个元素(0)相关问题 更多 >
编程相关推荐