python-3.x - 将数字数组转换为日期
问题描述
我想将一组数字[YYYYMMDD,YYYYMMDD,...]
转换为日期,这样我就可以对它们进行减法运算。我的最终目标是从第一个值开始获得一个以天为单位的经过时间的数组x_0
。为此,我必须运行一个迭代,将每个替换x_n
为(x_n - x_0)
,但我必须以适当的方式转换数字,这样我才能进行减法并获得一致的值。我想知道是否有一种简单的方法可以以对我的目的有用的方式转换 numpy 数组。
解决方案
由于它们是数字,因此您可以使用整数算术来提取年、月和日。并且,使用它,您可以构造datetime.date
. 下面有一个函数可以将您的一个数字转换为日期对象。
import datetime
def number_to_date(number):
year = number // 10000
month = number // 100 - year * 100
day = number - month * 100 - year * 10000
return datetime.date(year, month, day)
您可以在 for 循环内或地图内使用它来转换所有这些,然后随心所欲地使用它们。例如:
numbers = np.array([20200829, 20200910, 20201015])
dates = list(map(number_to_date, numbers))
base_date = dates[0]
deltas = np.array(list(map(lambda date: (date - base_date).days, dates)))
print(deltas)
如果你愿意,你可以去掉np.array
s。他们只是在那里,因为你说你正在使用 NumPy。
推荐阅读
- sql-server - SQL 将多行分组为 2 行
- checkbox - 如何在角度 5 的 ngFor 的给定列表中一次只选择一个复选框?
- c++ - 编译器错误:只需要复制省略,但似乎需要移动构造函数(编译器)
- perl - 如何从 perl 脚本调用 shell 脚本
- sql - ORA-02292: 违反完整性约束 (XXX.JOB_EXEC_PARAMS_FK) - 在 Spring Batch 中找到子记录
- sql - 从 2008 年到 2014 年的数据库 SQL 服务器迁移
- php - 在 Swift 4 中实现 php serialize()
- python - 从网站抓取网页以捕获分页链接的问题
- sql - SSIS:ole db 源 [55] 错误 0xC0202009。
- sql - SQL:删除时间戳中最多不同 x 秒的几乎重复的行并保留最旧的行