Skip to content

Commit 6beadd4

Browse files
author
Chang She
committed
BLD: platform int fixes
1 parent 0c5f670 commit 6beadd4

File tree

6 files changed

+15
-8
lines changed

6 files changed

+15
-8
lines changed

pandas/core/algorithms.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ def factorize(values, sort=False, order=None, na_sentinel=-1):
9797
table = hash_klass(len(values))
9898
labels, counts = table.get_labels(values, uniques, 0, na_sentinel)
9999

100+
labels = com._ensure_platform_int(labels)
101+
100102
uniques = com._asarray_tuplesafe(uniques)
101103
if sort and len(counts) > 0:
102104
sorter = uniques.argsort()

pandas/core/factor.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import numpy as np
2-
2+
import pandas.core.common as com
33
import pandas._tseries as lib
44

55

@@ -57,10 +57,10 @@ def unique_with_labels(values):
5757
rizer = lib.Factorizer(len(values))
5858
labels, _ = rizer.factorize(values, sort=False)
5959
uniques = Index(rizer.uniques)
60-
60+
labels = com._ensure_platform_int(labels)
6161
try:
6262
sorter = uniques.argsort()
63-
reverse_indexer = np.empty(len(sorter), dtype=np.int64)
63+
reverse_indexer = np.empty(len(sorter), dtype=np.int_)
6464
reverse_indexer.put(sorter, np.arange(len(sorter)))
6565
labels = reverse_indexer.take(labels)
6666
uniques = uniques.take(sorter)

pandas/core/index.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1378,9 +1378,10 @@ def lexsort_depth(self):
13781378
return self.nlevels
13791379
else:
13801380
return 0
1381-
1381+
1382+
int64_labels = [com._ensure_int64(lab) for lab in self.labels]
13821383
for k in range(self.nlevels, 0, -1):
1383-
if lib.is_lexsorted(self.labels[:k]):
1384+
if lib.is_lexsorted(int64_labels[:k]):
13841385
return k
13851386

13861387
return 0
@@ -1690,6 +1691,7 @@ def sortlevel(self, level=0, ascending=True):
16901691
if not ascending:
16911692
indexer = indexer[::-1]
16921693

1694+
indexer = com._ensure_platform_int(indexer)
16931695
new_labels = [lab.take(indexer) for lab in self.labels]
16941696

16951697
new_index = MultiIndex._from_elements(self.values.take(indexer),

pandas/core/series.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -970,8 +970,9 @@ def count(self, level=None):
970970

971971
# call cython function
972972
max_bin = len(level_index)
973+
labels = com._ensure_int64(self.index.labels[level])
973974
counts = lib.count_level_1d(mask.view(np.uint8),
974-
self.index.labels[level], max_bin)
975+
labels, max_bin)
975976
return Series(counts, index=level_index)
976977

977978
return notnull(self.values).sum()

pandas/src/join.pyx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,8 @@ def full_outer_join(ndarray[int64_t] left, ndarray[int64_t] right,
177177
_get_result_indexer(right_sorter, right_indexer))
178178

179179
def _get_result_indexer(sorter, indexer):
180+
if indexer.dtype != np.int_:
181+
indexer = indexer.astype(np.int_)
180182
res = sorter.take(indexer)
181183
np.putmask(res, indexer == -1, -1)
182184
return res

pandas/tools/merge.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -434,10 +434,10 @@ def _sort_labels(uniques, left, right):
434434
reverse_indexer = np.empty(len(sorter), dtype=np.int64)
435435
reverse_indexer.put(sorter, np.arange(len(sorter)))
436436

437-
new_left = reverse_indexer.take(left)
437+
new_left = reverse_indexer.take(com._ensure_platform_int(left))
438438
np.putmask(new_left, left == -1, -1)
439439

440-
new_right = reverse_indexer.take(right)
440+
new_right = reverse_indexer.take(com._ensure_platform_int(right))
441441
np.putmask(new_right, right == -1, -1)
442442

443443
return new_left, new_right

0 commit comments

Comments
 (0)