Skip to content

Commit b8fe2e8

Browse files
authored
ENH: sort=bool keyword argument for index.difference pandas-dev#17839
ENH: sort=bool keyword argument for index.difference pandas-dev#17839
1 parent 9cbf895 commit b8fe2e8

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

pandas/core/indexes/base.py

+13-10
Original file line numberDiff line numberDiff line change
@@ -2326,7 +2326,7 @@ def intersection(self, other):
23262326
taken.name = None
23272327
return taken
23282328

2329-
def difference(self, other):
2329+
def difference(self, other, sort=True):
23302330
"""
23312331
Return a new Index with elements from the index that are not in
23322332
`other`.
@@ -2366,14 +2366,15 @@ def difference(self, other):
23662366
label_diff = np.setdiff1d(np.arange(this.size), indexer,
23672367
assume_unique=True)
23682368
the_diff = this.values.take(label_diff)
2369-
try:
2370-
the_diff = sorting.safe_sort(the_diff)
2371-
except TypeError:
2372-
pass
2369+
if sort:
2370+
try:
2371+
the_diff = sorting.safe_sort(the_diff)
2372+
except TypeError:
2373+
pass
23732374

23742375
return this._shallow_copy(the_diff, name=result_name, freq=None)
23752376

2376-
def symmetric_difference(self, other, result_name=None):
2377+
def symmetric_difference(self, other, result_name=None, sort=True):
23772378
"""
23782379
Compute the symmetric difference of two Index objects.
23792380
It's sorted if sorting is possible.
@@ -2426,10 +2427,11 @@ def symmetric_difference(self, other, result_name=None):
24262427
right_diff = other.values.take(right_indexer)
24272428

24282429
the_diff = _concat._concat_compat([left_diff, right_diff])
2429-
try:
2430-
the_diff = sorting.safe_sort(the_diff)
2431-
except TypeError:
2432-
pass
2430+
if sort:
2431+
try:
2432+
the_diff = sorting.safe_sort(the_diff)
2433+
except TypeError:
2434+
pass
24332435

24342436
attribs = self._get_attributes_dict()
24352437
attribs['name'] = result_name
@@ -4220,3 +4222,4 @@ def _trim_front(strings):
42204222
def _validate_join_method(method):
42214223
if method not in ['left', 'right', 'inner', 'outer']:
42224224
raise ValueError('do not recognize join method %s' % method)
4225+

0 commit comments

Comments
 (0)