lf-shaw created ARROW-12818:
-------------------------------
Summary: Int64Array can not be casted to DoubleArray?
Key: ARROW-12818
URL: https://issues.apache.org/jira/browse/ARROW-12818
Project: Apache Arrow
Issue Type: Bug
Components: Python
Affects Versions: 4.0.0
Reporter: lf-shaw
In numpy, we can cast int64 to float64. But in pyarrow, we can't.
```python
import numpy as np
import pandas as pd
import pyarrow as pa
# timestamp
dt = pd.date_range('2021-01-01', periods=10)
# int64
arr = dt.asi8
# cast to float64
arr_double = arr.astype(np.float64)
# to arrow array
ts = pa.array(dt.asi8, type=pa.timestamp('ns'))
# to int64 array
ts_int64 = ts.cast(pa.int64())
# cast to float64
ts_double = ts_int64.cast(pa.float64())
```
the last line raise an exception
```python
---------------------------------------------------------------------------
ArrowInvalid Traceback (most recent call last)
<ipython-input-89-cc7cafd418c4> in <module>
----> 1 pa.array(dt.asi8,
type=pa.timestamp('ns')).cast(pa.int64()).cast(pa.float64())
/opt/anaconda3/lib/python3.8/site-packages/pyarrow/array.pxi in
pyarrow.lib.Array.cast()
/opt/anaconda3/lib/python3.8/site-packages/pyarrow/compute.py in cast(arr,
target_type, safe)
287 else:
288 options = CastOptions.unsafe(target_type)
--> 289 return call_function("cast", [arr], options)
290
291
/opt/anaconda3/lib/python3.8/site-packages/pyarrow/_compute.pyx in
pyarrow._compute.call_function()
/opt/anaconda3/lib/python3.8/site-packages/pyarrow/_compute.pyx in
pyarrow._compute.Function.call()
/opt/anaconda3/lib/python3.8/site-packages/pyarrow/error.pxi in
pyarrow.lib.pyarrow_internal_check_status()
/opt/anaconda3/lib/python3.8/site-packages/pyarrow/error.pxi in
pyarrow.lib.check_status()
ArrowInvalid: Integer value 1609459200000000000 not in range: -9007199254740992
to 9007199254740992
```
--
This message was sent by Atlassian Jira
(v8.3.4#803005)