Skip to content

Commit d1c1bc2

Browse files
committed
frame: exclude string from Iterable in constructor
1 parent d8f7fd5 commit d1c1bc2

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

pandas/core/frame.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@
7474
from pandas.core.arrays import Categorical, ExtensionArray
7575
import pandas.core.algorithms as algorithms
7676
from pandas.compat import (range, map, zip, lrange, lmap, lzip, StringIO, u,
77-
OrderedDict, raise_with_traceback)
77+
OrderedDict, raise_with_traceback,
78+
string_and_binary_types)
7879
from pandas import compat
7980
from pandas.compat import PY36
8081
from pandas.compat.numpy import function as nv
@@ -389,7 +390,8 @@ def __init__(self, data=None, index=None, columns=None, dtype=None,
389390
else:
390391
mgr = self._init_ndarray(data, index, columns, dtype=dtype,
391392
copy=copy)
392-
elif isinstance(data, collections.Iterable):
393+
elif (isinstance(data, collections.Iterable)
394+
and not isinstance(data, string_and_binary_types)):
393395
if not isinstance(data, collections.Sequence):
394396
data = list(data)
395397
if len(data) > 0:

pandas/tests/series/test_constructors.py

+6
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,12 @@ def __iter__(self):
166166
result = Series(Iter(), dtype='int64')
167167
assert_series_equal(result, expected)
168168

169+
def test_constructor_single_str(self):
170+
171+
expected = Series(['abc'])
172+
result = Series('abc')
173+
assert_series_equal(result, expected)
174+
169175
def test_constructor_list_like(self):
170176

171177
# make sure that we are coercing different

0 commit comments

Comments
 (0)