gpt4 book ai didi

python - "' 时间戳 ' object does not support indexing", 'occurred at index 0' )

转载 作者:行者123 更新时间:2023-11-28 19:00:15 25 4
gpt4 key购买 nike

我正在尝试处理一个数据框,我必须在其中创建一个新列来填充 xnpv 函数给出的结果

def xnpv(rate, values, dates):

if rate <= -1.0:
return float('inf')
d0 = dates[0] # or min(dates)
return sum([ vi / (1.0 + rate)**((di - d0).days / 365.0) for vi, di in zip(values, dates)])

F['newcolumn'] = F.apply(lambda x: xnpv(0.1, x['Cash'], x['Date']), axis=1)

当我执行上面的代码时,出现以下错误:TypeError: ("'Timestamp' object does not support indexing", 'occurred at index 0')请帮我解决这个问题

当我使用下面的表达式时

F['newcolumn'] = F.groupby('Name').apply(lambda x: xnpv(0.1, x['Cash'], x['Date']))

它给了我另一个错误:KeyError: 0

example

最佳答案

我觉得问题出在step

d0 = dates[0] 

dates 将是一个时间序列。我认为您假设它是完整的“日期”栏。当您迭代 pandas 系列时,使用 apply(lambda x: f(x) axis=1) x 是一行,而不是一列。因此 x["date"] 将是一个时间戳,而不是您期望的系列。

编辑:也许 vecotrised 而不是依赖 .apply() 会更好?

def xnpv(rate, values, dates):
return values / (1.0 + rate) ** ((dates - dates.min()).dt.days / 365.0)
F['newcolumn'] = xnpv(0.1, F['Cash'], F['Date'])

编辑 2:这似乎对我有用。与您的预期一致吗?

F = pd.DataFrame({"name":['a','a','a','a','b','b','b','b'],
"cash":[1,1,3,4,1,2,4,5],
"date":['2017-01-01','2017-02-01','2017-03-01','2017-04-01',
'2017-01-01','2017-02-01','2017-03-01','2017-04-01']
})
F["date"] = pd.to_datetime(F["date"])

def xnpv(rate, values, dates):
return sum(values / (1.0 + rate) ** ((dates - dates.min()).dt.days / 365.0))
F.groupby('name').apply(lambda x: xnpv(0.1, x['cash'], x['date']))

关于python - "' 时间戳 ' object does not support indexing", 'occurred at index 0' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53411749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com