计算末尾数据的百分比(单位为)

2024-05-14 00:48:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要计算给定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]

Tags: 数据函数dfclosedefnandaysprice
2条回答

我相信您获得输出的NaN值的原因是lastbegin变量属于Series类型。尝试添加.item(),这将返回float

last = df[-1:]['Close Price'].item()
begin = df[-days:-(days-1)]['Close Price'].item()

不要为了获得单个元素而对数据进行切片(正如Kurt Kline所指出的那样,这会为您提供Series),您只需要获得感兴趣的元素:

def profit_loss(days):
    last = df['Close Price'][-1]
    begin = df['Close Price'][-days]
    return ((last-begin)/last)*100

这还修复了一个错误:在原始代码中,如果days=1,那么您将在[-1:0]天内取收盘价,这根本不是一天,因为此切片从最后一个元素(-1)开始,并尝试向下移动到第一个元素(0)

相关问题 更多 >