Skip to content

Commit e2da0bd

Browse files
committed
BLD: more int32->int64 on 32-bit fixes
1 parent 6beadd4 commit e2da0bd

File tree

9 files changed

+33
-16
lines changed

9 files changed

+33
-16
lines changed

pandas/core/frame.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3651,8 +3651,8 @@ def _count_level(self, level, axis=0, numeric_only=False):
36513651
level = self.index._get_level_number(level)
36523652

36533653
level_index = frame.index.levels[level]
3654-
counts = lib.count_level_2d(mask, frame.index.labels[level],
3655-
len(level_index))
3654+
labels = com._ensure_int64(frame.index.labels[level])
3655+
counts = lib.count_level_2d(mask, labels, len(level_index))
36563656

36573657
result = DataFrame(counts, index=level_index,
36583658
columns=frame.columns)

pandas/core/groupby.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,7 @@ def _aggregate_series_fast(self, obj, func):
709709
dummy = obj[:0].copy()
710710
indexer = lib.groupsort_indexer(group_index, ngroups)[0]
711711
obj = obj.take(indexer)
712-
group_index = group_index.take(indexer)
712+
group_index = com.ndtake(group_index, indexer)
713713
grouper = lib.SeriesGrouper(obj, func, group_index, ngroups,
714714
dummy)
715715
result, counts = grouper.get_result()
@@ -986,7 +986,8 @@ def labels(self):
986986
def counts(self):
987987
if self._counts is None:
988988
if self._was_factor:
989-
self._counts = lib.group_count(self.labels, self.ngroups)
989+
self._counts = lib.group_count(com._ensure_int64(self.labels),
990+
self.ngroups)
990991
else:
991992
self._make_labels()
992993
return self._counts
@@ -1397,7 +1398,7 @@ def aggregate(self, arg, *args, **kwargs):
13971398
zipped = zip(result.index.levels, result.index.labels,
13981399
result.index.names)
13991400
for i, (lev, lab, name) in enumerate(zipped):
1400-
result.insert(i, name, lev.values.take(lab))
1401+
result.insert(i, name, com.ndtake(lev.values, lab))
14011402
result = result.consolidate()
14021403
else:
14031404
values = result.index.values
@@ -1812,7 +1813,7 @@ def generate_groups(data, group_index, ngroups, axis=0, factory=lambda x: x):
18121813
group_index = com._ensure_int64(group_index)
18131814

18141815
indexer = lib.groupsort_indexer(group_index, ngroups)[0]
1815-
group_index = group_index.take(indexer)
1816+
group_index = com.ndtake(group_index, indexer)
18161817

18171818
if isinstance(data, BlockManager):
18181819
# this is sort of wasteful but...
@@ -1984,11 +1985,11 @@ def _reorder_by_uniques(uniques, labels):
19841985
mask = labels < 0
19851986

19861987
# move labels to right locations (ie, unsort ascending labels)
1987-
labels = reverse_indexer.take(labels)
1988+
labels = com.ndtake(reverse_indexer, labels)
19881989
np.putmask(labels, mask, -1)
19891990

19901991
# sort observed ids
1991-
uniques = uniques.take(sorter)
1992+
uniques = com.ndtake(uniques, sorter)
19921993

19931994
return uniques, labels
19941995

pandas/core/series.py

+1
Original file line numberDiff line numberDiff line change
@@ -2026,6 +2026,7 @@ def take(self, indices, axis=0):
20262026
-------
20272027
taken : Series
20282028
"""
2029+
indices = com._ensure_platform_int(indices)
20292030
new_index = self.index.take(indices)
20302031
new_values = self.values.take(indices)
20312032
return Series(new_values, index=new_index, name=self.name)

pandas/sparse/frame.py

+1
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,7 @@ def take(self, indices, axis=0):
582582
-------
583583
taken : SparseDataFrame
584584
"""
585+
indices = com._ensure_platform_int(indices)
585586
new_values = self.values.take(indices, axis=axis)
586587
if axis == 0:
587588
new_columns = self.columns

pandas/src/datetime.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1117,7 +1117,7 @@ cdef inline int m8_weekday(int64_t val):
11171117
ts = convert_to_tsobject(val)
11181118
return ts_dayofweek(ts)
11191119

1120-
cdef int64_t DAY_US = 24 * 60 * 60 * 1000000
1120+
cdef int64_t DAY_US = 86400000000LL
11211121

11221122
def values_at_time(ndarray[int64_t] stamps, int64_t time):
11231123
cdef:

pandas/src/hashtable.pyx

+12-3
Original file line numberDiff line numberDiff line change
@@ -792,8 +792,11 @@ cdef class Factorizer:
792792

793793
# sort on
794794
if sort:
795+
if labels.dtype != np.int_:
796+
labels = labels.astype(np.int_)
797+
795798
sorter = list_to_object_array(self.uniques).argsort()
796-
reverse_indexer = np.empty(len(sorter), dtype=np.int64)
799+
reverse_indexer = np.empty(len(sorter), dtype=np.int_)
797800
reverse_indexer.put(sorter, np.arange(len(sorter)))
798801

799802
labels = reverse_indexer.take(labels)
@@ -826,8 +829,11 @@ cdef class Int64Factorizer:
826829

827830
# sort on
828831
if sort:
832+
if labels.dtype != np.int_:
833+
labels = labels.astype(np.int_)
834+
829835
sorter = list_to_object_array(self.uniques).argsort()
830-
reverse_indexer = np.empty(len(sorter), dtype=np.int64)
836+
reverse_indexer = np.empty(len(sorter), dtype=np.int_)
831837
reverse_indexer.put(sorter, np.arange(len(sorter)))
832838

833839
labels = reverse_indexer.take(labels)
@@ -893,8 +899,11 @@ cdef class DictFactorizer:
893899

894900
# sort on
895901
if sort:
902+
if labels.dtype != np.int_:
903+
labels = labels.astype(np.int_)
904+
896905
sorter = list_to_object_array(self.uniques).argsort()
897-
reverse_indexer = np.empty(len(sorter), dtype=np.int64)
906+
reverse_indexer = np.empty(len(sorter), dtype=np.int_)
898907
reverse_indexer.put(sorter, np.arange(len(sorter)))
899908

900909
labels = reverse_indexer.take(labels)

pandas/src/join.pyx

+6-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ def left_outer_join(ndarray[int64_t] left, ndarray[int64_t] right,
5454
Py_ssize_t max_groups, sort=True):
5555
cdef:
5656
Py_ssize_t i, j, k, count = 0
57-
ndarray[int64_t] left_count, right_count, left_sorter, right_sorter
57+
ndarray[int64_t] left_count, right_count
58+
ndarray left_sorter, right_sorter, rev
5859
ndarray[int64_t] left_indexer, right_indexer
5960
int64_t lc, rc
6061

@@ -105,7 +106,10 @@ def left_outer_join(ndarray[int64_t] left, ndarray[int64_t] right,
105106
right_indexer = _get_result_indexer(right_sorter, right_indexer)
106107

107108
if not sort:
108-
rev = np.empty(len(left), dtype=np.int64)
109+
if left_sorter.dtype != np.int_:
110+
left_sorter = left_sorter.astype(np.int_)
111+
112+
rev = np.empty(len(left), dtype=np.int_)
109113
rev.put(left_sorter, np.arange(len(left)))
110114

111115
right_indexer = right_indexer.take(rev)

pandas/tseries/index.py

+1
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,7 @@ def take(self, indices, axis=0):
614614
maybe_slice = lib.maybe_indices_to_slice(com._ensure_int64(indices))
615615
if isinstance(maybe_slice, slice):
616616
return self[maybe_slice]
617+
indices = com._ensure_platform_int(indices)
617618
taken = self.values.take(indices, axis=axis)
618619
return DatetimeIndex(taken, tz=self.tz, name=self.name)
619620

pandas/tseries/plotting.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -329,8 +329,8 @@ def _daily_finder(vmin, vmax, freq):
329329
dates_ = PeriodIndex(start=vmin, end=vmax, freq=freq)
330330
# Initialize the output
331331
info = np.zeros(span,
332-
dtype=[('val', int), ('maj', bool), ('min', bool),
333-
('fmt', '|S20')])
332+
dtype=[('val', np.int64), ('maj', bool),
333+
('min', bool), ('fmt', '|S20')])
334334
info['val'][:] = dates_.values
335335
info['fmt'][:] = ''
336336
info['maj'][[0, -1]] = True

0 commit comments

Comments
 (0)