【发布时间】:2022-11-15 19:34:25
【问题描述】:
我正在学习 Python,我正在尝试创建一个简单的循环,以将脏价格添加到我的数据框 bond_df 中。
Days_left 是一个系列,bond_df 是一个熊猫数据框,其中包含以下公式中使用的收盘价。
如果我运行命令:
days = days_left[1].days
我得到一个大小为 1、值为 2 的整数,这正是我所需要的。我需要天数作为整数,并且上面没有任何其他时间戳(见附图)。所以,我使用“.days”,这样我就可以提取天的整数值,并去掉小时和秒等的时间戳。
因此,我想我可以在循环中使用它来构建我的 dirty-prices 列,在我的 df 中:
for i, number in days_left:
days = days_left[i].days
bond_df['dirty_price'][i] = bond_df['closing_price'][i] + ((365 - days)/365)
但是,这不起作用并返回消息:
“TypeError:无法解压不可迭代的 Timedelta 对象”
然后我想,我可以使用范围来构造一个循环:
for i in range(0, len(days_left)):
days = days_left[i].days
bond_df['dirty_price'][i] = bond_df['closing_price'][i] + ((365 - days)/365)
print(days, bond_df['dirty_price'])
这似乎按预期工作。
但我仍然想知道,我一开始做错了什么。
有人可以解释这两个循环之间的区别以及为什么我不能像上面那样做吗?
一切顺利,网卡
【问题讨论】:
-
注意:您可以使用三重 ``` 栅栏或缩进来格式化代码块。试图在一行上弄脏它会使其不可读。
标签: python pandas for-loop datetime timedelta