代码之家  ›  专栏  ›  技术社区  ›  spitfiredd

熊猫:excel days360等效

  •  1
  • spitfiredd  · 技术社区  · 6 年前

    我一直在看熊猫。采摘。补偿,我没有看到任何东西。

    例如在excel中,

    d1 = 2/2/2015
    d2 = 1/1/2018
    
    =days(d1, d2) # 1064
    =days360(d1, d2) # 1049
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   andrew_reece    6 年前

    a Reddit thread days360

    def days360(start_date, end_date, method_eu=False):
        start_day = start_date.day
        start_month = start_date.month
        start_year = start_date.year
        end_day = end_date.day
        end_month = end_date.month
        end_year = end_date.year
    
        if (
            start_day == 31 or
            (
                method_eu is False and
                start_month == 2 and (
                    start_day == 29 or (
                        start_day == 28 and
                        start_date.is_leap_year is False
                    )
                )
            )
        ):
            start_day = 30
    
        if end_day == 31:
            if method_eu is False and start_day != 30:
                end_day = 1
    
                if end_month == 12:
                    end_year += 1
                    end_month = 1
                else:
                    end_month += 1
            else:
                end_day = 30
    
        return (
            end_day + end_month * 30 + end_year * 360 -
            start_day - start_month * 30 - start_year * 360)
    

    操作数据测试:

    d1 = pd.to_datetime("2/2/2015")
    d2 = pd.to_datetime("1/1/2018")
    
    days360(d1, d2) # 1049