python - 如何计算两个日期之间的天数?
问题描述
如果我有两个日期(例如 19960104 和 19960314),那么获取这两个日期之间天数的最佳方法是什么?实际上我必须在我的数据框中计算许多日期。我使用代码:
`for j in range(datenumbers[i]):
date_format = "%Y%m%d"
a = datetime.strptime(str(df_first_day.date[j]), date_format)
b = datetime.strptime(str(df_first_day.exdate[j]), date_format)
delta = (b - a).days
df_first_day.days_to_expire[j] = delta`
我需要将两个日期之间的所有差异都放在我的数据框的一列中。我想知道是否有更好的方法来做不使用 for 循环
解决方案
如果您首先将文本转换为日期时间,您会发现日期更容易处理。然后计算回答您的问题的时间增量变得微不足道。
import datetime as dt
fmt = '%Y%m%d'
d1 = dt.datetime.strptime('19960104', fmt)
d2 = dt.datetime.strptime('19960314', fmt)
print((d2 - d1).days)
这显示:
70
编辑
如果您选择定义一个函数:
def num_to_timestamp(ymd):
return dt.datetime.strptime(str(num), '%Y%m%d')
那么您可以方便地将其应用于列:
df['date'] = df['date'].apply(num_to_timestamp)
同样,该axis=1
选项允许您构造一个与两个现有列不同的列。
推荐阅读
- java - 在 Java swing 窗口中设置换行符
- java - 如何将一个 Maven 插件的输出转换为另一个?
- javascript - 更新到 Jest 26 后模拟中断
- json - 如何将地址转换为坐标以放置在 SwiftUI 中的地图上?
- reactjs - Next.js 在控制台中未定义异步请求
- matlab - 使用数组寻址复合键控 1NF Matlab 表
- r - RStudio中模块功能的奇怪错误
- c# - C# 光标移动不会避免屏幕保护程序
- typescript - 如何防止自定义字符串类型的混合?
- azure - azcopy 同步失败并显示“409 此存储帐户不允许公共访问”。在私人容器上