如何从pd.datetime变量中减去字符串格式的pandas时间频率值?
解决方案
直接利用pandas内置的频率偏移对象即可实现需求,无需手动解析频率字符串。
通用方法(支持所有pandas频率字符串)
使用pd.tseries.frequencies.to_offset()将字符串格式的频率转换为对应的偏移对象,再直接与datetime变量做减法:
import pandas as pd date_value = pd.to_datetime("2019-12-10 10:57:00") freq_str = "15min" # 可替换为"1B"、"1W"等任意pandas支持的频率字符串 # 转换为偏移对象 offset = pd.tseries.frequencies.to_offset(freq_str) new_date_value = date_value - offset
这个方法能处理所有pandas支持的频率类型,包括固定时长(如1min、2h)和非固定时长(如1B工作日、1W周)的场景。
简化方法(仅支持固定时长频率)
如果你的频率都是固定时长类型(无1B、1W这类业务/周期频率),可以直接用pd.to_timedelta()转换后运算:
new_date_value = date_value - pd.to_timedelta(freq_str)
内容的提问来源于stack exchange,提问作者wildcat89
相关产品推荐
相关产品推荐

