Home > Blockchain >  How do I make a column with iso weeks?
How do I make a column with iso weeks?

Time:03-28

I have a data frame (df) with a column of dates (DATUM). i then try to make a new column with iso weeks on the dates.

But as a beginner in python, I have run into a problem. When I try to use:

df ['iso_week_num'] = df ["DATUM"]. isocalendar () [1]

I get the following error message:

AttributeError: 'Series' object has no attribute 'isocalendar'

What am I doing wrong?

CodePudding user response:

Notice that isocalendar must be applied to a timestamp (check documentation) - it is not an attribute as the error raised. Said that, this should work for your case:

# Generating some data (you may use rand too):
dates = ['2021-01-03', '2021-01-04', '2021-01-05', '2021-01-06', '2021-01-07']
dataframe = pd.DataFrame(data = dates, columns = ['date'])
dataframe['date'] = pd.to_datetime(dataframe['date'])

# Applying isocalendar for each element in the series:
dataframe['year'] = dataframe['date'].apply(lambda x: x.isocalendar()[0])

CodePudding user response:

You should use pandas.Series.dt() to access object for datetimelike properties of the Series values.

df['week'] = df['date'].dt.isocalendar().week
  • Related