diff --git a/cpp/src/arrow/python/numpy_to_arrow.cc b/cpp/src/arrow/python/numpy_to_arrow.cc index aada6bf598..a944b80914 100644 --- a/cpp/src/arrow/python/numpy_to_arrow.cc +++ b/cpp/src/arrow/python/numpy_to_arrow.cc @@ -443,8 +443,8 @@ inline Status NumPyConverter::ConvertData(std::shared_ptr<Buffer>* data) { RETURN_NOT_OK(NumPyDtypeToArrow(reinterpret_cast<PyObject*>(dtype_), &input_type)); if (!input_type->Equals(*type_)) { - RETURN_NOT_OK(CastBuffer(input_type, *data, length_, nullptr, 0, type_, cast_options_, - pool_, data)); + RETURN_NOT_OK(CastBuffer(input_type, *data, length_, null_bitmap_, null_count_, type_, + cast_options_, pool_, data)); } return Status::OK(); @@ -477,8 +477,8 @@ inline Status NumPyConverter::ConvertData<Date32Type>(std::shared_ptr<Buffer>* d } else { RETURN_NOT_OK(NumPyDtypeToArrow(reinterpret_cast<PyObject*>(dtype_), &input_type)); if (!input_type->Equals(*type_)) { - RETURN_NOT_OK(CastBuffer(input_type, *data, length_, nullptr, 0, type_, - cast_options_, pool_, data)); + RETURN_NOT_OK(CastBuffer(input_type, *data, length_, null_bitmap_, null_count_, + type_, cast_options_, pool_, data)); } } @@ -518,8 +518,8 @@ inline Status NumPyConverter::ConvertData<Date64Type>(std::shared_ptr<Buffer>* d } else { RETURN_NOT_OK(NumPyDtypeToArrow(reinterpret_cast<PyObject*>(dtype_), &input_type)); if (!input_type->Equals(*type_)) { - RETURN_NOT_OK(CastBuffer(input_type, *data, length_, nullptr, 0, type_, - cast_options_, pool_, data)); + RETURN_NOT_OK(CastBuffer(input_type, *data, length_, null_bitmap_, null_count_, + type_, cast_options_, pool_, data)); } } diff --git a/python/pyarrow/tests/test_convert_pandas.py b/python/pyarrow/tests/test_convert_pandas.py index 264b51c32f..9bee9053c5 100644 --- a/python/pyarrow/tests/test_convert_pandas.py +++ b/python/pyarrow/tests/test_convert_pandas.py @@ -2224,6 +2224,15 @@ def test_safe_unsafe_casts(self): assert table.column('B').type == pa.int32() +def test_safe_cast_from_float_with_nans_to_int(): + # TODO(kszucs): write tests for creating Date32 and Date64 arrays, see + # ARROW-4258 and https://github.com/apache/arrow/pull/3395 + values = pd.Series([1, 2, None, 4]) + arr = pa.Array.from_pandas(values, type=pa.int32(), safe=True) + expected = pa.array([1, 2, None, 4], type=pa.int32()) + assert arr.equals(expected) + + def _fully_loaded_dataframe_example(): index = pd.MultiIndex.from_arrays([ pd.date_range('2000-01-01', periods=5).repeat(2), diff --git a/python/pyarrow/tests/test_plasma_tf_op.py b/python/pyarrow/tests/test_plasma_tf_op.py index e239055209..53ecae217e 100644 --- a/python/pyarrow/tests/test_plasma_tf_op.py +++ b/python/pyarrow/tests/test_plasma_tf_op.py @@ -82,6 +82,7 @@ def FromPlasma(): @pytest.mark.plasma @pytest.mark.tensorflow +@pytest.mark.skip(reason='Until ARROW-4259 is resolved') def test_plasma_tf_op(use_gpu=False): import pyarrow.plasma as plasma import tensorflow as tf
With regards, Apache Git Services