pandas 为什么除以np.timedelta(...)会从两个datetime对象之间的差异中得到一个浮点答案?

osh3o9ms  于 2023-02-02  发布在  其他
关注(0)|答案(1)|浏览(115)

假设我有两个datetime(或timestamp)变量,我想求出它们之间的差,我可以这样做:

diff = date1 - date2

这将产生一个timedelta对象(如果使用两个日期时间序列,则为dtype=timedelta64数组)。
然后,如果我想得到diff的浮点值(天数),我可以执行:

diff / np.timedelta64(24, 'h') # np.timedelta64(1, 'd') works the same, IIRC.

这将产生一个浮点值,如前所述,然后您可以对该浮点值进行算术比较。
从文档或谷歌搜索中我不明白的是为什么这是一个数学运算,当它感觉更像是我简单地从timedelta转换为float,然后只选择天的值。
我很可能只是不理解timedelta的细节,但我希望其他人比我更了解它,并能解释这背后的逻辑。

jm2pwxwz

jm2pwxwz1#

根据我对所有时间问题背后的一般逻辑的理解,timedelta 64只是一个表示时间跨度的64位数字,这个跨度可以用小时或天表示,但不能用月或年表示,因为月或年的数量取决于跨度在时间线上的“位置”。
小时或天可以通过将表示时差的数字除以表示小时或天的“单位”数量来计算,因此除法是从timedelta 64值获得适当结果的正确方法。
numpy文档在时间增量上指出:
NumPy允许两个日期时间值相减,该操作生成时间单位为数字。
我由此得出结论,时间增量只是一个数值,其值/阶由相关单位定义,因此它可以转换为另一个单位,转换的方式与单位之间的转换相同,通常通过乘、除、加、减来完成,这些都是对数字的算术运算。

相关问题