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)

Reply via email to