Skip to content

Commit d8acdff

Browse files
committed
git fix
1 parent c8131c7 commit d8acdff

File tree

1 file changed

+21
-23
lines changed

1 file changed

+21
-23
lines changed

pandas/core/algorithms.py

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -863,30 +863,12 @@ def value_counts_internal(
863863
dropna: bool = True,
864864
) -> Series:
865865
from pandas import (
866+
DatetimeIndex,
866867
Index,
867868
Series,
869+
TimedeltaIndex,
868870
)
869871

870-
def _preserve_freq(original_values, result_index):
871-
freq = getattr(original_values, "freq", None)
872-
873-
if (
874-
freq is not None
875-
and type(original_values) is type(result_index)
876-
and len(result_index) == len(original_values)
877-
and result_index.equals(original_values)
878-
):
879-
try:
880-
# Rebuild index with freq using the same constructor
881-
return type(result_index)(
882-
result_index._data, freq=freq, name=result_index.name
883-
)
884-
except (TypeError, ValueError):
885-
# If reconstruction fails, return original index
886-
pass
887-
888-
return result_index
889-
890872
index_name = getattr(values, "name", None)
891873
name = "proportion" if normalize else "count"
892874

@@ -953,10 +935,26 @@ def _preserve_freq(original_values, result_index):
953935
if (
954936
bins is None
955937
and not sort
956-
and hasattr(values, "freq")
957-
and values.freq is not None
938+
and isinstance(values, (DatetimeIndex, TimedeltaIndex))
939+
and values.inferred_freq is not None
958940
):
959-
idx = _preserve_freq(values, idx)
941+
# freq preservation
942+
# Check if the result would be the same as input
943+
if len(idx) == len(values) and idx.equals(values):
944+
# Rebuild idx with the correct type and inferred frequency
945+
if isinstance(values, DatetimeIndex):
946+
idx = DatetimeIndex(
947+
idx._data if hasattr(idx, "_data") else idx.values,
948+
freq=values.inferred_freq,
949+
name=idx.name,
950+
)
951+
952+
elif isinstance(values, TimedeltaIndex):
953+
idx = TimedeltaIndex(
954+
idx._data if hasattr(idx, "_data") else idx.values,
955+
freq=values.inferred_freq,
956+
name=idx.name,
957+
)
960958

961959
result = Series(counts, index=idx, name=name, copy=False)
962960

0 commit comments

Comments
 (0)