Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions pandas/core/construction.py
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,11 @@ def array(
return data.copy()
return data

# to avoid returning an array of string representation of objects.
if dtype == StringDtype():
if any(not lib.is_scalar(i) for i in data):
raise TypeError("Values must be a 1D list-like")

if isinstance(dtype, ExtensionDtype):
cls = dtype.construct_array_type()
return cls._from_sequence(data, dtype=dtype, copy=copy)
Expand Down
6 changes: 6 additions & 0 deletions pandas/tests/arrays/test_array.py
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,12 @@ def test_nd_raises(data):
pd.array(data, dtype="int64")


@pytest.mark.parametrize("data", [[["a"], ["b"]]])
def test_not_1D_like_raises(data):
with pytest.raises(TypeError, match="Values must be a 1D list-like"):
pd.array(data, dtype=pd.StringDtype())


def test_scalar_raises():
with pytest.raises(ValueError, match="Cannot pass scalar '1'"):
pd.array(1)
Expand Down
Loading