【问题标题】:Can I use Pandas DateOffset with the number of offset days specified in another column?我可以将 Pandas DateOffset 与另一列中指定的偏移天数一起使用吗?
【发布时间】:2020-08-04 02:31:22
【问题描述】:

我有一个带有日期列的 pandas DataFrame。我想生成一个采用原始日期的新列,并将其偏移另一列中指定的天数。

我已经能够让它工作了:

import pandas
...
df['End Date'] = df['Start Date'] + pandas.DateOffset(days=1)

但我想插入 df['Number of Days']

而不是 days=1

但是,我得到 TypeError: Invalid type 。必须是 int 或 float。

df['Number of Days'] 是 int64 类型,所以我相信它应该可以工作。我在这里做错了什么?还是 days 必须是静态的?

【问题讨论】:

    标签: python pandas date


    【解决方案1】:

    您可以将天数转换为timedelta,然后添加即可。

    df = pd.DataFrame({'Start Date': ['2020-01-01','2020-01-10']
                      ,'Number of Days': [5,10]})
    
    df['Start Date'] = pd.to_datetime(df['Start Date'])
    df['Number of Days'] = pd.to_timedelta(df['Number of Days'], unit= 'D')
    df['End Date'] = df['Start Date'] + df['Number of Days']
    
    df.head()
    #output
        dates       days    end Dates
    0   2020-01-01  5 days  2020-01-06
    1   2020-01-10  10 days 2020-01-20
    

    【讨论】:

    • 我实际上能够使用:df['End Date'] = df['Start Date'] + df['Number of Days'].astype('timedelta64[D ]')
    • 非常好@Daniel!这与我的回答的逻辑相同,但有点不同:-)
    • @Daniel 关闭主题,您可以回答您自己的问题,accept it 作为答案,或者接受我的 :)
    • 非常感谢您的快速回答。我也会试试你的版本。
    猜你喜欢
    • 2016-08-14
    • 2014-07-18
    • 2021-08-01
    • 2013-10-21
    • 1970-01-01
    • 2023-03-25
    • 2020-08-04
    • 2018-10-23
    • 2011-02-22
    相关资源
    最近更新 更多