Skip to content

Commit 6f1fda5

Browse files
committed
Initial commit
1 parent a82edf9 commit 6f1fda5

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

python/pyarrow/array.pxi

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2308,6 +2308,13 @@ cdef _array_like_to_pandas(obj, options, types_mapper):
23082308
dtype = "object"
23092309
elif types_mapper:
23102310
dtype = types_mapper(original_type)
2311+
elif _pandas_api.uses_string_dtype() and (
2312+
original_type.id == _Type_STRING or
2313+
original_type.id == _Type_LARGE_STRING or
2314+
original_type.id == _Type_STRING_VIEW
2315+
):
2316+
# for pandas 3.0+, use pandas' new default string dtype
2317+
dtype = _pandas_api.pd.StringDtype(na_value=np.nan)
23112318
else:
23122319
dtype = None
23132320

python/pyarrow/tests/test_pandas.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4651,6 +4651,29 @@ def test_chunked_array_to_pandas_types_mapper():
46514651
assert result.dtype == np.dtype("int64")
46524652

46534653

4654+
@pytest.mark.parametrize(
4655+
"string_type", [pa.string(), pa.large_string(), pa.string_view()]
4656+
)
4657+
@pytest.mark.parametrize("data", [[], [None]])
4658+
def test_array_to_pandas_string_dtype(string_type, data):
4659+
# GH-49002
4660+
if Version(pd.__version__) < Version("3.0.0"):
4661+
pytest.skip("PyArrow backed string dtype missing")
4662+
4663+
arr = pa.array(data, type=string_type)
4664+
result = arr.to_pandas()
4665+
assert result.dtype == pd.StringDtype(na_value=np.nan)
4666+
4667+
arr = pa.chunked_array([data], type=string_type)
4668+
result = arr.to_pandas()
4669+
assert result.dtype == pd.StringDtype(na_value=np.nan)
4670+
4671+
# Test types_mapper takes precedence
4672+
types_mapper = {string_type: None}.get
4673+
result = arr.to_pandas(types_mapper=types_mapper)
4674+
assert result.dtype == np.dtype("object")
4675+
4676+
46544677
# ----------------------------------------------------------------------
46554678
# Legacy metadata compatibility tests
46564679

0 commit comments

Comments
 (0)