将大熊猫舍入到最近的年份/月份

时间:2019-07-30 08:45:58

标签: python-3.x pandas datetime

我正在尝试将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

知道我缺少什么吗?

1 个答案:

答案 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会四舍五入到下个月开始