Search code examples
pythontimearithmetic-expressions

Difference between today and a date python


I have a pandas dataframe in which a column is in this format:

0         1983-02-07
1         1989-10-07
2         1969-10-28
3         1967-02-25
4         1982-07-21
             ...    
328970    1995-06-09
328971    1999-01-11
328972    1962-04-01
328973    1996-05-19
328974    1994-03-03
Name: Nascita - Data, Length: 328975, dtype: object

what I'd like to do is something like

df['datecolumn']-datetime.now()

Solution

  • Something like this should work:

    import pandas as pd
    from datetime import datetime
    data = ["1983-02-07", 
    "1989-10-07", 
    "1969-10-28", 
    "1967-02-25", 
    "1982-07-21"]
    
    df = pd.DataFrame(data, columns = ["Date"])
    print(df)
    df["Date"] = pd.to_datetime(df['Date'])
    #df["Difference"] = df["Date"].apply(lambda x: x-datetime.now())
    
    # Alternate code
    from dateutil.relativedelta import relativedelta
    df["Difference"] = df["Date"].apply(lambda x: relativedelta(datetime.now(), x).years)
    print(df)
    

    Output:

    Date
    0  1983-02-07
    1  1989-10-07
    2  1969-10-28
    3  1967-02-25
    4  1982-07-21
    
    Date                   Difference
    0 1983-02-07 -13409 days +06:41:00.418879
    1 1989-10-07 -10975 days +06:41:00.418728
    2 1969-10-28 -18259 days +06:41:00.418671
    3 1967-02-25 -19235 days +06:41:00.418630
    4 1982-07-21 -13610 days +06:41:00.418591
    

    OUTPUT ALTERNATE CODE:

    Date
    0  1983-02-07
    1  1989-10-07
    2  1969-10-28
    3  1967-02-25
    4  1982-07-21
    
    Date  Difference
    0 1983-02-07          36
    1 1989-10-07          30
    2 1969-10-28          49
    3 1967-02-25          52
    4 1982-07-21          37