我认为这应该很简单,但我所看到的是涉及迭代一个嵌套的日期字段来确定两个日期之间的差异的技术。我遇到了麻烦。我熟悉MSSQL DATEDIFF,所以我认为Pandas datetime会有类似的东西。我可能有,但我错过了它。
有没有一种Pandonic方法可以将月数确定为两个日期(日期时间)之间的整数,而不需要重新计算?请记住,可能有数百万行,因此性能是一个考虑因素。
dates是datetime对象,结果应该是- new列是Month:
Date1 Date2 Months
2016-04-07 2017-02-01 11
2017-02-01 2017-03-05 1
字符串
6条答案
按热度按时间mitkmikd1#
这里有一个简单的答案,我的朋友:
字符串
现在:
型
ffdz8vbo2#
另一种可能更优雅的解决方案是
delta = df.Date2.dt.to_period('M') - df.Date1.dt.to_period('M')
,它可以避免舍入错误。从Pandas 0.24开始,这个表达式返回一个偏移量,可以用
delta.apply(lambda x: x.n)
转换为整数q9rjltbz3#
字符串
siotufzp4#
这适用于pandas 1.1.1:
字符串
wmomyfyw5#
只是对@pberkes答案的一个小补充。如果你想要整数值的答案,而不是pandas._libs.tslibs.offsets.MonthEnd,只需将
.n
附加到上面的代码中。字符串
3phpmpom6#
有两种时间差的概念,在某种意义上都是正确的。让我们比较一下7月31日和9月01日之间的月份差异:
字符串
使用numpy的时间增量,
delta1=1
,这是正确的,因为中间只有一个月,但是delta2=2
,这也是正确的,因为9月离7月还有两个月。在大多数情况下,两者都会给出相同的答案,但是考虑到上下文,其中一个可能比另一个更正确。