Python:从数据框中添加周数到日期

4

如何将两个df列相加(日期+周):

以下代码适用:

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

但是,当尝试从一个列中添加周时,会出现类型错误:unsupported type for timedelta weeks component: Series

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

希望得到任何帮助,谢谢!


也许您可以添加21天? - Christophe
我认为这与我使用列有关,因为 weeks = 3 可以正常工作。只有当我尝试用 df 中的列替换 3 时才会出现错误。 - komalharjani
Pandas有一个to_timedelta函数,您可以使用它将整个第二列转换为时间增量,然后再将其添加到另一列中。 - Arne
1个回答

3
您可以使用pandas的to_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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接