Python 3.8.6
令人惊讶的是,我无法在任何谷歌结果中找到完全相同的错误,但似乎datetime
's timedelta
and relativedelta
from relativedelta
module 无法比较。这是要复制的代码:
from datetime import timedelta
from dateutil import relativedelta
timedelta(days=1) < relativedelta.relativedelta(days=1)
输出:
TypeError Traceback (most recent call last)
<ipython-input-65-1444c9e4d5b8> in <module>
2 from dateutil import relativedelta
3
----> 4 timedelta(days=1) < relativedelta.relativedelta(days=1)
TypeError: '<' not supported between instances of 'datetime.timedelta' and 'relativedelta'
我也注意到 和 之间类似的不timedelta64[ns]
兼容relativedelta
重现代码
import datetime
from dateutil import relativedelta
r1 = pd.date_range(start = datetime.datetime(2018,1,1),end=datetime.datetime(2018,4,1),periods=4)
r2 = pd.date_range(start = datetime.datetime(2018,2,1),end=datetime.datetime(2018,5,1),periods=4)
(r1-r1) < relativedelta.relativedelta(days=1)
输出:
InvalidComparison Traceback (most recent call last)
~/miniconda/envs/nyraml386/lib/python3.8/site-packages/pandas/core/arrays/datetimelike.py in wrapper(self, other)
115 try:
--> 116 other = _validate_comparison_value(self, other)
117 except InvalidComparison:
~/miniconda/envs/nyraml386/lib/python3.8/site-packages/pandas/core/arrays/datetimelike.py in _validate_comparison_value(self, other)
95 elif not is_list_like(other):
---> 96 raise InvalidComparison(other)
97
InvalidComparison: relativedelta(days=+1)
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
<ipython-input-75-57e9f57d40b9> in <module>
4 r2 = pd.date_range(start = datetime.datetime(2018,2,1),end=datetime.datetime(2018,5,1),periods=4)
5
----> 6 (r1-r1) < relativedelta.relativedelta(days=1)
~/miniconda/envs/nyraml386/lib/python3.8/site-packages/pandas/core/indexes/extension.py in wrapper(self, other)
127
128 op = getattr(self._data, opname)
--> 129 return op(other)
130
131 wrapper.__name__ = opname
~/miniconda/envs/nyraml386/lib/python3.8/site-packages/pandas/core/ops/common.py in new_method(self, other)
63 other = item_from_zerodim(other)
64
---> 65 return method(self, other)
66
67 return new_method
~/miniconda/envs/nyraml386/lib/python3.8/site-packages/pandas/core/arrays/datetimelike.py in wrapper(self, other)
116 other = _validate_comparison_value(self, other)
117 except InvalidComparison:
--> 118 return invalid_comparison(self, other, op)
119
120 dtype = getattr(other, "dtype", None)
~/miniconda/envs/nyraml386/lib/python3.8/site-packages/pandas/core/ops/invalid.py in invalid_comparison(left, right, op)
32 else:
33 typ = type(right).__name__
---> 34 raise TypeError(f"Invalid comparison between dtype={left.dtype} and {typ}")
35 return res_values
36
TypeError: Invalid comparison between dtype=timedelta64[ns] and relativedelta
我误解了一些非常基本的东西吗?这似乎relativedelta
是一个禁区。是吗?处理 和 的最佳方法timedeltas
是什么?python
pandas
numpy