123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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)
|