Skip to content

API: change default for sep in str.cat (in docstring) #23443

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Nov 6, 2018
9 changes: 5 additions & 4 deletions pandas/core/strings.py
Original file line number Diff line number Diff line change
Expand Up @@ -2051,7 +2051,7 @@ def _get_series_list(self, others, ignore_index=False):
return ([Series(others, index=idx)], False)
raise TypeError(err_msg)

def cat(self, others=None, sep=None, na_rep=None, join=None):
def cat(self, others=None, sep='', na_rep=None, join=None):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is likely some other check for sep is None in the codebase, this shouldn't pass, and as I said pls change back to the original modulo the doc-string.

"""
Concatenate strings in the Series/Index with given separator.

Expand All @@ -2074,9 +2074,10 @@ def cat(self, others=None, sep=None, na_rep=None, join=None):

If others is None, the method returns the concatenation of all
strings in the calling Series/Index.
sep : string or None, default None
If None, concatenates without any separator.
na_rep : string or None, default None
sep : str, default ''
The separator between the different elements/columns. By default
the empty string `''` is used.
na_rep : str or None, default None
Representation that is inserted for all missing values:

- If `na_rep` is None, and `others` is None, missing values in the
Expand Down
11 changes: 6 additions & 5 deletions pandas/tests/test_strings.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,11 @@ def test_str_cat_raises_intuitive_error(self, box):
with tm.assert_raises_regex(ValueError, message):
s.str.cat(' ')

@pytest.mark.parametrize('sep', ['', None])
@pytest.mark.parametrize('dtype_target', ['object', 'category'])
@pytest.mark.parametrize('dtype_caller', ['object', 'category'])
@pytest.mark.parametrize('box', [Series, Index])
def test_str_cat_categorical(self, box, dtype_caller, dtype_target):
def test_str_cat_categorical(self, box, dtype_caller, dtype_target, sep):
s = Index(['a', 'a', 'b', 'a'], dtype=dtype_caller)
s = s if box == Index else Series(s, index=s)
t = Index(['b', 'a', 'b', 'c'], dtype=dtype_target)
Expand All @@ -176,23 +177,23 @@ def test_str_cat_categorical(self, box, dtype_caller, dtype_target):
# Series/Index with unaligned Index
with tm.assert_produces_warning(expected_warning=FutureWarning):
# FutureWarning to switch to alignment by default
result = s.str.cat(t)
result = s.str.cat(t, sep=sep)
assert_series_or_index_equal(result, expected)

# Series/Index with Series having matching Index
t = Series(t, index=s)
result = s.str.cat(t)
result = s.str.cat(t, sep=sep)
assert_series_or_index_equal(result, expected)

# Series/Index with Series.values
result = s.str.cat(t.values)
result = s.str.cat(t.values, sep=sep)
assert_series_or_index_equal(result, expected)

# Series/Index with Series having different Index
t = Series(t.values, index=t)
with tm.assert_produces_warning(expected_warning=FutureWarning):
# FutureWarning to switch to alignment by default
result = s.str.cat(t)
result = s.str.cat(t, sep=sep)
assert_series_or_index_equal(result, expected)

@pytest.mark.parametrize('box', [Series, Index])
Expand Down