Skip to content

Commit 12229c8

Browse files
update set_freq for compatibility with pandas 3.0+
1 parent da82c30 commit 12229c8

1 file changed

Lines changed: 16 additions & 15 deletions

File tree

schimpy/param.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -441,23 +441,24 @@ def set_run_nday(self, nday):
441441
def set_freq(self, name, freq):
442442
"""Set binary output frequency using Pandas offset or string that evaluates as offset"""
443443
dt = int(self["dt"])
444-
if type(freq) in (str, pd.Timedelta):
445-
freq = pd.tseries.frequencies.to_offset(freq)
446-
dt = pd.tseries.frequencies.to_offset(f"{dt}s")
447-
nspool = pd.Timedelta(freq) / pd.Timedelta(dt)
448-
elif isinstance(freq, pd.offsets.DateOffset):
449-
dt = pd.tseries.frequencies.to_offset(f"{dt}s")
450-
nspool = pd.Timedelta(freq) / pd.Timedelta(dt)
451-
if abs(nspool - round(nspool)) > 0.01:
452-
raise ValueError("Output freq not divisible by dt")
453-
else:
454-
nspool = round(nspool)
455-
else:
456-
print(type(freq))
444+
445+
# Normalize to Timedelta
446+
if isinstance(freq, str):
447+
freq = pd.to_timedelta(freq)
448+
elif isinstance(freq, pd.tseries.offsets.BaseOffset):
449+
freq = pd.to_timedelta(str(freq))
450+
elif not isinstance(freq, pd.Timedelta):
457451
raise ValueError(
458-
"Entry must be string or offset or something that is convertible to offset"
452+
"Entry must be string or offset or Timedelta that is convertible to offset"
459453
)
460-
self[name] = int(nspool)
454+
455+
dt_td = pd.Timedelta(seconds=dt)
456+
nspool = freq / dt_td
457+
458+
if abs(nspool - round(nspool)) > 0.01:
459+
raise ValueError("Output freq not divisible by dt")
460+
461+
self[name] = int(round(nspool))
461462

462463
def get_station_out_freq(self):
463464
return self.get_freq("nspool_sta")

0 commit comments

Comments
 (0)