1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
| import numpy as np
| import pytest
|
| from pandas import (
| DataFrame,
| Index,
| Interval,
| IntervalIndex,
| Series,
| Timedelta,
| Timestamp,
| )
| import pandas._testing as tm
|
|
| class TestIntervalIndexRendering:
| def test_frame_repr(self):
| # https://github.com/pandas-dev/pandas/pull/24134/files
| df = DataFrame(
| {"A": [1, 2, 3, 4]}, index=IntervalIndex.from_breaks([0, 1, 2, 3, 4])
| )
| result = repr(df)
| expected = " A\n(0, 1] 1\n(1, 2] 2\n(2, 3] 3\n(3, 4] 4"
| assert result == expected
|
| @pytest.mark.parametrize(
| "constructor,expected",
| [
| (
| Series,
| (
| "(0.0, 1.0] a\n"
| "NaN b\n"
| "(2.0, 3.0] c\n"
| "dtype: object"
| ),
| ),
| (DataFrame, (" 0\n(0.0, 1.0] a\nNaN b\n(2.0, 3.0] c")),
| ],
| )
| def test_repr_missing(self, constructor, expected):
| # GH 25984
| index = IntervalIndex.from_tuples([(0, 1), np.nan, (2, 3)])
| obj = constructor(list("abc"), index=index)
| result = repr(obj)
| assert result == expected
|
| def test_repr_floats(self):
| # GH 32553
|
| markers = Series(
| ["foo", "bar"],
| index=IntervalIndex(
| [
| Interval(left, right)
| for left, right in zip(
| Index([329.973, 345.137], dtype="float64"),
| Index([345.137, 360.191], dtype="float64"),
| )
| ]
| ),
| )
| result = str(markers)
| expected = "(329.973, 345.137] foo\n(345.137, 360.191] bar\ndtype: object"
| assert result == expected
|
| @pytest.mark.parametrize(
| "tuples, closed, expected_data",
| [
| ([(0, 1), (1, 2), (2, 3)], "left", ["[0, 1)", "[1, 2)", "[2, 3)"]),
| (
| [(0.5, 1.0), np.nan, (2.0, 3.0)],
| "right",
| ["(0.5, 1.0]", "NaN", "(2.0, 3.0]"],
| ),
| (
| [
| (Timestamp("20180101"), Timestamp("20180102")),
| np.nan,
| ((Timestamp("20180102"), Timestamp("20180103"))),
| ],
| "both",
| ["[2018-01-01, 2018-01-02]", "NaN", "[2018-01-02, 2018-01-03]"],
| ),
| (
| [
| (Timedelta("0 days"), Timedelta("1 days")),
| (Timedelta("1 days"), Timedelta("2 days")),
| np.nan,
| ],
| "neither",
| [
| "(0 days 00:00:00, 1 days 00:00:00)",
| "(1 days 00:00:00, 2 days 00:00:00)",
| "NaN",
| ],
| ),
| ],
| )
| def test_to_native_types(self, tuples, closed, expected_data):
| # GH 28210
| index = IntervalIndex.from_tuples(tuples, closed=closed)
| result = index._format_native_types()
| expected = np.array(expected_data)
| tm.assert_numpy_array_equal(result, expected)
|
|