【问题标题】:Using pandas dateoffset and step forward num_years (given by a column)使用 pandas dateoffset 并向前推进 num_years(由列给出)
【发布时间】:2021-06-18 15:09:58
【问题描述】:

我有一个包含日期时间“Date_Begin”列的数据框。我还有另一列“Years_to_add”。我想通过“years_to_add”列中的年数来计算第三列,其中“DateBegin”向前推进。我想避免在一年内使用像 365.25 这样的近似值。我想简单地添加日历意义上的年数(我知道将一年添加到 2 月 29 日会有问题)。

在我的 pandas 版本中,我不能使用年份作为 timedelta(不再支持),所以我使用的是 DateOffset 方法。

我无法正确使用语法。根据here 的建议,我尝试了以下方法:

df["begin_date"] + pd.DateOffset(years=int(df["years_to_add"]))

df["begin_date"] + df["years_to_add"].apply(pd.DateOffset.years)

【问题讨论】:

    标签: python pandas datetime datetimeoffset


    【解决方案1】:

    只需将其作为 lambda 函数传递

    df["begin_date"] + df["years_to_add"].apply(lambda y: pd.DateOffset(years=y))
    

    【讨论】:

    • 抱歉耽搁了。该解决方案有效,但它给了我一个警告错误:PerformanceWarning: Adding/subtracting object-dtype array to DatetimeArray not vectorized。有没有更好的方法来使用 DateOffset 函数来避免这种情况?
    • DateOffsetDatetimeArray 的添加本身未矢量化,因为 DateOffset 没有低级 dtype。 timedelta 有一个 dtype,它只允许以天为单位指定的偏移量,不支持年份。所以没有更好的方法来使用DateOffset 进行矢量化。 @蒂姆
    猜你喜欢
    • 1970-01-01
    • 2017-08-27
    • 2014-07-18
    • 2017-09-21
    • 2017-12-27
    • 2020-02-13
    • 1970-01-01
    • 2016-08-14
    • 2014-11-12
    相关资源
    最近更新 更多