-
-
Notifications
You must be signed in to change notification settings - Fork 18.7k
Closed
Labels
BugDatetimeDatetime data dtypeDatetime data dtypeNumeric OperationsArithmetic, Comparison, and Logical operationsArithmetic, Comparison, and Logical operationsTimedeltaTimedelta data typeTimedelta data type
Description
dti = pd.date_range('2016-01-01', periods=3)
ser = pd.Series(dti)
tr = np.array([True, True, True])
>>> ser & tr
0 False
1 False
2 False
dtype: bool
>>> ser | ser
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pandas/core/ops.py", line 1047, in wrapper
other = fill_int(other) if is_other_int_dtype else fill_bool(other)
File "pandas/core/ops.py", line 1036, in <lambda>
fill_bool = lambda x: x.fillna(False).astype(bool)
File "pandas/util/_decorators.py", line 138, in wrapper
return func(*args, **kwargs)
File "pandas/core/generic.py", line 4443, in astype
**kwargs)
File "pandas/core/internals.py", line 3606, in astype
return self.apply('astype', dtype=dtype, **kwargs)
File "pandas/core/internals.py", line 3473, in apply
applied = getattr(b, f)(**kwargs)
File "pandas/core/internals.py", line 569, in astype
**kwargs)
File "pandas/core/internals.py", line 2603, in _astype
return super(DatetimeBlock, self)._astype(dtype=dtype, **kwargs)
File "pandas/core/internals.py", line 657, in _astype
values = astype_nansafe(values.ravel(), dtype, copy=True)
File "pandas/core/dtypes/cast.py", line 668, in astype_nansafe
to_dtype=dtype))
TypeError: cannot astype a datetimelike from [datetime64[ns]] to [bool]
It isn't clear to me what the desired behavior is here.
Also operating with an Index falls through to a case that I think is intended to only catch scalars:
tdi = pd.TimedeltaIndex(['1 Day', '2 Days', 'NaT'])
ser = pd.Series(tdi)
>>> ser & tdi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pandas/core/ops.py", line 1062, in wrapper
res_values = na_op(self.values, other)
File "pandas/core/ops.py", line 1020, in na_op
if not isna(y):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Metadata
Metadata
Assignees
Labels
BugDatetimeDatetime data dtypeDatetime data dtypeNumeric OperationsArithmetic, Comparison, and Logical operationsArithmetic, Comparison, and Logical operationsTimedeltaTimedelta data typeTimedelta data type