Skip to content

Commit a1e2323

Browse files
Fix for issue pandas-dev#57268 - floating point support
1 parent f1afeec commit a1e2323

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

pandas/core/indexes/interval.py

+13-8
Original file line numberDiff line numberDiff line change
@@ -1103,7 +1103,13 @@ def interval_range(
11031103
if is_number(endpoint):
11041104
if com.all_not_none(start, end, freq):
11051105
# 0.1 ensures we capture end
1106-
breaks = np.arange(start, end + (freq * 0.1), freq)
1106+
if isinstance(start, float | np.float16) or isinstance(
1107+
end, float | np.float16
1108+
):
1109+
dtype = np.dtype("float64")
1110+
else:
1111+
dtype = start.dtype if start.dtype == end.dtype else np.dtype("float64")
1112+
breaks = np.arange(start, end + (freq * 0.1), freq, dtype=dtype)
11071113
else:
11081114
# compute the period/start/end if unspecified (at most one)
11091115
if periods is None:
@@ -1128,17 +1134,16 @@ def interval_range(
11281134
breaks, # type: ignore[arg-type]
11291135
dtype,
11301136
)
1131-
return IntervalIndex.from_breaks(
1132-
breaks,
1133-
name=name,
1134-
closed=closed,
1135-
dtype=IntervalDtype(subtype=breaks.dtype, closed=closed),
1136-
)
11371137
else:
11381138
# delegate to the appropriate range function
11391139
if isinstance(endpoint, Timestamp):
11401140
breaks = date_range(start=start, end=end, periods=periods, freq=freq)
11411141
else:
11421142
breaks = timedelta_range(start=start, end=end, periods=periods, freq=freq)
11431143

1144-
return IntervalIndex.from_breaks(breaks, name=name, closed=closed)
1144+
return IntervalIndex.from_breaks(
1145+
breaks,
1146+
name=name,
1147+
closed=closed,
1148+
dtype=IntervalDtype(subtype=breaks.dtype, closed=closed),
1149+
)

0 commit comments

Comments
 (0)