我正在尝试将pandas datetime列舍入到最接近的年份或月份,但是我不知道该怎么做。例如,此最小示例四舍五入到最接近的小时数:
pd.Timestamp.now().round('60min')
我想要的是替换'60min'
以便四舍五入pd.Timestamp.now()
以获得2020-01-01
(对于年份)或2019-08-01
(对于月的情况)(请注意,now()
恰好是发问时的2019-07-30 16:41:23.612004
!)。
pandas.Series.dt.round文档建议使用freq
链接到this page的参数,但是尝试在那里的年/年选项将返回此错误:
ValueError: is a non-fixed frequency
知道我缺少什么吗?
答案 0 :(得分:-1)
如果该列实际上是DateTime列(使用df.dtypes
进行检查),则可以使用以下代码获取年,月和日。
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['Day'] = df['Date'].dt.day
df['round_Year'] = df['Date']+ pd.offsets.YearBegin(-1)
四舍五入到本年开始。将-1更改为0将四舍五入到下一年开始。
df['round_Month'] = df['Date'] + pd.offsets.MonthBegin(-1)
四舍五入到当前月份的开始。将-1更改为0会四舍五入到下个月开始