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
[email protected](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