在Python的熊猫中是否有与SQL的约会功能相同的功能? 这个问题的答案是: Add column with number of days between dates in DataFrame pandas 解释了如何计算天数的差异。例如:
>>> (pd.to_datetime('15-10-2010') - pd.to_datetime('15-07-2010')) / pd.offsets.Day(1)
92.0
但是,我有两个问题:
答案 0 :(得分:2)
<强>更新强>
def months_between(d1, d2):
dd1 = min(d1, d2)
dd2 = max(d1, d2)
return (dd2.year - dd1.year)*12 + dd2.month - dd1.month
In [125]: months_between(pd.to_datetime('2015-01-02 12:13:14'), pd.to_datetime('2012-03-02 12:13:14'))
Out[125]: 34
OLD回答:
In [40]: (pd.to_datetime('15-10-2010') - pd.to_datetime('15-07-2010')).days
Out[40]: 92
您也可以这样做几个月:
In [48]: pd.to_datetime('15-10-2010').month - pd.to_datetime('15-07-2010').month
Out[48]: 3
答案 1 :(得分:1)
如果你环顾一下,似乎几个月都无法摆脱TimeDelta:
In [193]: date_1 = pd.to_datetime('2015-01-02 12:13:14')
In [194]: date_2 = pd.to_datetime('2012-03-02 12:13:14')
In [195]: date_1 - date_2
Out[195]: Timedelta('1036 days 00:00:00')
In [199]: td_1.
td_1.asm8 td_1.days td_1.freq td_1.microseconds td_1.resolution td_1.to_pytimedelta td_1.value
td_1.ceil td_1.delta td_1.is_populated td_1.min td_1.round td_1.to_timedelta64 td_1.view
td_1.components td_1.floor td_1.max td_1.nanoseconds td_1.seconds td_1.total_seconds
In [199]: td_1.components
Out[199]: Components(days=1036, hours=0, minutes=0, seconds=0, milliseconds=0, microseconds=0, nanoseconds=0)
此外,Components
似乎没有提供相同价值的不同面额,但
In [213]: td_1.components.days
Out[213]: 1036
In [214]: td_1.components.hours
Out[214]: 0
最终,看起来你到目前为止所做的事情似乎是最好的&#34;溶液:
In [214]: td_1.components.days/30
Out[214]: 34.53333333333333
In [215]: np.round(td_1.components.days/30)
Out[215]: 35.0
In [216]: np.floor(td_1.components.days/30)
Out[216]: 34.0
不是真正的好消息,但无论如何都是一个解决方案。
至于将Matlab附带的文档与大熊猫的文档进行比较,你是对的。但是,如果你要比较两者的价格标签,也许有些问题得到解答..(?)