如何用Pandas Timedelta表示一个月?为何‘1M’代表1分钟?
问题解答
pd.Timedelta('1M')返回1分钟是因为Pandas里'M'是**分钟(Minutes)**的缩写,并非月份。
为什么Timedelta不支持月份?
月份的时长不固定(28-31天不等),而pd.Timedelta仅用于表示固定时长的时间差(比如天、小时、分钟这类长度固定的单位),因此没有专门表示月份的代码词。
实现“月份时间差”的两种方法
方法1:使用Pandas的
DateOffset
这是Pandas内置的日历偏移工具,专门处理月份、年份这类可变时长的时间调整:import pandas as pd # 示例:给指定日期加1个月 target_date = pd.to_datetime('2024-02-28') new_date = target_date + pd.DateOffset(months=1) # 输出:2024-03-28 00:00:00方法2:使用
dateutil.relativedelta
第三方库python-dateutil的relativedelta功能更灵活,同样支持月份操作:from dateutil.relativedelta import relativedelta import pandas as pd target_date = pd.to_datetime('2024-02-28') new_date = target_date + relativedelta(months=1) # 输出:2024-03-28 00:00:00
注意:如果只是想表达“一个月”的时间偏移,不能用Timedelta,必须依赖这类基于日历规则的工具,它们会自动适配不同月份的天数差异。
内容的提问来源于stack exchange,提问作者MathMan 99
相关产品推荐
相关产品推荐

