Week of a month pandas

后端 未结 5 1541
孤街浪徒
孤街浪徒 2020-12-16 01:21

I\'m trying to get week on a month, some months might have four weeks some might have five. For each date i would like to know to which week does it belongs to. I\'m mostly

5条回答
  •  清酒与你
    2020-12-16 01:40

    You can get it subtracting the current week and the week of the first day of the month, but extra logic is needed to handle first and last week of the year:

    def get_week(s):
        prev_week = (s - pd.to_timedelta(7, unit='d')).dt.week
        return (
            s.dt.week
            .where((s.dt.month != 1) | (s.dt.week < 50), 0)
            .where((s.dt.month != 12) | (s.dt.week > 1), prev_week + 1)
        )
    
    def get_week_of_month(s):
        first_day_of_month = s - pd.to_timedelta(s.dt.day - 1, unit='d')
        first_week_of_month = get_week(first_day_of_month)
        current_week = get_week(s)
        return  current_week - first_week_of_month
    

提交回复
热议问题