是否有一个大熊猫惯用的方法来找出两只大熊猫DatetimeIndex之间的天数差异?
>>> d1 = pd.to_datetime(['2000-01-01', '2000-01-02'])
>>> d2 = pd.to_datetime(['2001-01-01', '2001-01-02'])
-
运算符设置为差异,即d1中的日期,但不是d2中的日期。
>>> d1-d2
DatetimeIndex(['2000-01-01', '2000-01-02'], dtype='datetime64[ns]', freq=None)
IMO,这与numpy和纯python行为不一致。甚至不是熊猫本身
>>> d2[0]-d1[0]
Timedelta('366 days 00:00:00')
这就是我想要的,但很难看。
>>> [d.days for d in d2.to_pydatetime() - d1.to_pydatetime()]
[366, 366]
答案 0 :(得分:1)
您直接使用np.subtract
:
np.subtract(d2, d1)
结果会给你一个TimedeltaIndex:
TimedeltaIndex(['366 days', '366 days'], dtype='timedelta64[ns]', freq=None)
然后如果想在那上使用.days
。
另一种可能的方式:
pd.to_timedelta(d2.values - d1.values).days
您将离开:
array([366, 366])
答案 1 :(得分:1)
这是因为dtype
是datetimeIndex
所以算术操作是按设计设置的,如果你从它们构造Series
那么你可以根据需要执行逐元素减法:
In [349]:
d1 = pd.to_datetime(['2000-01-01', '2000-01-02'])
d2 = pd.to_datetime(['2001-01-01', '2001-01-02'])
s1 = pd.Series(d1)
s2 = pd.Series(d2)
(s1-s2).abs()
Out[349]:
0 366 days
1 366 days
dtype: timedelta64[ns]