|
30 | 30 | from pandas.core.dtypes.common import (
|
31 | 31 | is_datetime64_dtype,
|
32 | 32 | is_datetime64tz_dtype,
|
| 33 | + is_float_dtype, |
| 34 | + is_integer_dtype, |
33 | 35 | is_period_dtype,
|
34 | 36 | is_sequence,
|
35 | 37 | is_timedelta64_dtype,
|
| 38 | + is_unsigned_integer_dtype, |
| 39 | + pandas_dtype, |
36 | 40 | )
|
37 | 41 |
|
38 | 42 | import pandas as pd
|
|
41 | 45 | CategoricalIndex,
|
42 | 46 | DataFrame,
|
43 | 47 | DatetimeIndex,
|
| 48 | + Float64Index, |
44 | 49 | Index,
|
| 50 | + Int64Index, |
45 | 51 | IntervalIndex,
|
46 | 52 | MultiIndex,
|
47 | 53 | RangeIndex,
|
48 | 54 | Series,
|
| 55 | + UInt64Index, |
49 | 56 | bdate_range,
|
50 | 57 | )
|
51 | 58 | from pandas._testing._io import ( # noqa:F401
|
@@ -292,21 +299,41 @@ def makeBoolIndex(k=10, name=None):
|
292 | 299 | return Index([False, True] + [False] * (k - 2), name=name)
|
293 | 300 |
|
294 | 301 |
|
| 302 | +def makeNumericIndex(k=10, name=None, *, dtype): |
| 303 | + dtype = pandas_dtype(dtype) |
| 304 | + assert isinstance(dtype, np.dtype) |
| 305 | + |
| 306 | + if is_integer_dtype(dtype): |
| 307 | + values = np.arange(k, dtype=dtype) |
| 308 | + if is_unsigned_integer_dtype(dtype): |
| 309 | + values += 2 ** (dtype.itemsize * 8 - 1) |
| 310 | + elif is_float_dtype(dtype): |
| 311 | + values = np.random.random_sample(k) - np.random.random_sample(1) |
| 312 | + values.sort() |
| 313 | + values = values * (10 ** np.random.randint(0, 9)) |
| 314 | + else: |
| 315 | + raise NotImplementedError(f"wrong dtype {dtype}") |
| 316 | + |
| 317 | + return Index(values, dtype=dtype, name=name) |
| 318 | + |
| 319 | + |
295 | 320 | def makeIntIndex(k=10, name=None):
|
296 |
| - return Index(list(range(k)), name=name) |
| 321 | + base_idx = makeNumericIndex(k, name=name, dtype="int64") |
| 322 | + return Int64Index(base_idx) |
297 | 323 |
|
298 | 324 |
|
299 | 325 | def makeUIntIndex(k=10, name=None):
|
300 |
| - return Index([2 ** 63 + i for i in range(k)], name=name) |
| 326 | + base_idx = makeNumericIndex(k, name=name, dtype="uint64") |
| 327 | + return UInt64Index(base_idx) |
301 | 328 |
|
302 | 329 |
|
303 | 330 | def makeRangeIndex(k=10, name=None, **kwargs):
|
304 | 331 | return RangeIndex(0, k, 1, name=name, **kwargs)
|
305 | 332 |
|
306 | 333 |
|
307 | 334 | def makeFloatIndex(k=10, name=None):
|
308 |
| - values = sorted(np.random.random_sample(k)) - np.random.random_sample(1) |
309 |
| - return Index(values * (10 ** np.random.randint(0, 9)), name=name) |
| 335 | + base_idx = makeNumericIndex(k, name=name, dtype="float64") |
| 336 | + return Float64Index(base_idx) |
310 | 337 |
|
311 | 338 |
|
312 | 339 | def makeDateIndex(k: int = 10, freq="B", name=None, **kwargs) -> DatetimeIndex:
|
|
0 commit comments