Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to set a custom day of week mapping

I am trying to create my own custom day of the week mapping using python. I have used a few different methods such as dayofweek and isoweekday. Yet all of these dont provide me with what I need.


0    2026-01-01 00:00:00
1    2026-01-01 01:00:00
2    2026-01-01 02:00:00
3    2026-01-01 03:00:00
4    2026-01-01 04:00:00
5    2026-01-01 05:00:00
6    2026-01-01 06:00:00
7    2026-01-01 07:00:00
8    2026-01-01 08:00:00
9    2026-01-01 09:00:00
10   2026-01-01 10:00:00
11   2026-01-01 11:00:00
12   2026-01-01 12:00:00
13   2026-01-01 13:00:00
14   2026-01-01 14:00:00
15   2026-01-01 15:00:00
16   2026-01-01 16:00:00
17   2026-01-01 17:00:00
18   2026-01-01 18:00:00
19   2026-01-01 19:00:00
Name: Date, dtype: datetime64[ns]

It contiunes to

0    2026-01-01 00:00:00
1    2026-01-01 01:00:00
2    2026-01-01 02:00:00
3    2026-01-01 03:00:00
4    2026-01-01 04:00:00
       
95   2026-01-04 23:00:00
96   2026-01-05 00:00:00
97   2026-01-05 01:00:00
98   2026-01-05 02:00:00
99   2026-01-05 03:00:00

example of my code
power_data['Day of Week'] = power_data['Date'].dt.dayofweek+1
power_data['Day of Weekv2'] = power_data['Date'].dt.isoweekday

Above is a example portion of my dataframe, the data formatting I would like to follow is Sunday be 1, monday be 2…etc and Saturday be equal to 7. Please let me know if I can do this how its currently presented

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

As per pandas documentation for weekday, it mentions that:

The day of the week with Monday=0, Sunday=6.

Which means, you just need to add 2 to the weekday value as you want to shift Monday from 0 to 2, then take modulo by 8

# df is your dataframe, and date is the column name consisting pandas Timestamp
>>> (df['date'].dt.weekday+2)%8

#output:
0     5
1     5
2     5
3     5
4     5
5     5
6     5
7     5
8     5
9     5
10    5
11    5
12    5
13    5
14    5
15    5
16    5
17    5
18    5
Name: date, dtype: int64
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading