#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