Python: Добавьте недели к дате из df

#python #dataframe #python-datetime

#питон #фрейм данных #python-дата-время

Вопрос:

Как бы я добавил два столбца df вместе (дата недели):

Это работает для меня:

df['Date'] = pd.to_datetime(startDate, format='%Y-%m-%d') datetime.timedelta(weeks = 3)

Но когда я пытаюсь добавить недели из столбца, я получаю ошибку типа: неподдерживаемый тип для компонента недель timedelta: Серия

df['Date'] = pd.to_datetime(startDate, format='%Y-%m-%d') datetime.timedelta(weeks = df['Duration (weeks)'])

Буду признателен за любую помощь, спасибо!

Комментарии:

1. Может быть, вы могли бы добавить 21 день?

2. Я думаю, что это как-то связано с тем, что я использую столбец, потому что weeks = 3 работает нормально. Только когда я пытаюсь заменить 3 столбцом из df, я получаю ошибку.

3. У Pandas есть to_timedelta функция, которую вы можете использовать для преобразования всего второго столбца, прежде чем добавлять его в другой столбец.

Ответ №1:

Вы можете использовать функцию pandas to_timelta для преобразования столбца количество недель в timedelta, например:

 import pandas as pd import numpy as np  # create a DataFrame with a `date` column df = pd.DataFrame(  pd.date_range(start='1/1/2018', end='1/08/2018'),  columns=["date"] )  # add a column `weeks` with a random number of weeks df['weeks'] = np.random.randint(1, 6, df.shape[0])  # use `pd.to_timedelta` to transform the number of weeks column to a timedelta # and add it to the `date` column  df["new_date"] = df["date"]   pd.to_timedelta(df["weeks"], unit="W")  df.head()   date weeks new_date 0 2018-01-01 5 2018-02-05 1 2018-01-02 2 2018-01-16 2 2018-01-03 2 2018-01-17 3 2018-01-04 4 2018-02-01 4 2018-01-05 3 2018-01-26