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

For loop is only storing the last value in colum

I am trying to pull the week number given a date and then add that week number to the corresponding row in a pandas/python dataframe.

When I run a for loop it is only storing the last calculated value instead of recording each value.

I’ve tried .append but haven’t been able to get anything to work.

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

import datetime
from datetime import date

for i in df.index:
    
    week_number = date(df.year[i],df.month[i],df.day[i]).isocalendar()
    df['week'] = (week_number[1])

Expected values:

day month  year  week  
 8    12  2021    49  
19    12  2021    50  
26    12  2021    51  

Values I'm getting:
day month  year  week  
 8    12  2021    51  
19    12  2021    51  
26    12  2021    51  

>Solution :

You can simply use Pandas .apply method to make it a one-liner:

df["week"] = df.apply(lambda x: date(x.year, x.month, x.day).isocalendar()[1], axis=1)
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