【问题标题】:Handling dates with mix of two and four digit years in python在python中处理两位和四位数字年份的日期
【发布时间】:2019-05-14 21:20:42
【问题描述】:

我有两个 DataFrame df:

 A                B
5/4/2018     8/4/2018 
24/5/15       26/5/15 
21/7/16       22/7/16 
3/7/2015     5/7/2015 
1/7/2016     1/7/2016 

我想计算每一行的天数差。
例如:

A                B             C 
5/4/2018     8/4/2018          3 
24/5/15       26/5/15          2 

我尝试使用 pd.to_datetime 将数据帧转换为日期时间。但是,收到错误“ValueError:未转换的数据仍然存在:18”

尝试了以下代码:

import datetime as dt

df['A'] = pd.to_datetime(df['A'], format = "%d/%m/%y").datetime.datetime.strftime("%Y-%m-%d")

df['B'] = pd.to_datetime(df['B'], format = "%d/%m/%y").datetime.datetime.strftime("%Y-%m-%d")

df['C'] = (df['B'] - df['A']).dt.days

注意:使用 python 3.7

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    试试:

    df['A'] = pd.to_datetime(df['A'], dayfirst=True)
    
    df['B'] = pd.to_datetime(df['B'], dayfirst=True)
    
    df['C'] = (df['B'] - df['A']).dt.days
    

    输出:

        A           B           C
    0   2018-04-05  2018-04-08  3
    1   2015-05-24  2015-05-26  2
    

    【讨论】:

    • 你在发帖前试过这个代码吗?它抛出同样的错误
    • @Vaishali 道歉,我正在尝试编写示例数据集。
    • 感谢@QuangHoang,添加“dayfirst = True”后它正在工作。
    猜你喜欢
    • 2013-01-31
    • 2011-01-02
    • 2010-12-11
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    相关资源
    最近更新 更多