【问题标题】:Convert DatetimeIndex to datetime.date in pandas在 Pandas 中将 DatetimeIndex 转换为 datetime.date
【发布时间】:2018-09-11 14:39:21
【问题描述】:

我正在尝试从 pandas 的列中减去今天的日期以获得天数(作为整数)。

我首先使用 pd.to_datetime 转换列中的日期(例如:2018 年 9 月 27 日)。

df['Date'] - datetime.datetime.now().date()

我收到以下错误:

TypeError: 不支持的操作数类型 -: 'DatetimeIndex' 和 'datetime.date'

我想弄清楚如何让它工作,还将天数转换为整数?

【问题讨论】:

  • 你试过df['Date'].date()吗?

标签: python pandas


【解决方案1】:

我认为问题可能是由于您从日期对象(不包括时间)中减去了 pandas 日期时间对象。你可以试试这个:

df['Date_2'] = pd.to_datetime(df['Date']).dt.date

现在进行计算:df['Date_2'] - datetime.datetime.now().date() 应该可以工作。

【讨论】:

    【解决方案2】:

    让我们使用熊猫Timestamp.now()

    s = pd.Series('27-Sep-2018')
    
    s = pd.to_datetime(s)
    
    (s - pd.Timestamp.now()).dt.days
    

    输出:

    0     15
    dtype: int64
    

    注意:错误表明您不能从对象“datetime.date”中减去对象类型 DatetimeIndex。因此,使用 pandas Timestamp 创建与 DateTimeIndex 相同的对象类型。

    【讨论】:

    【解决方案3】:

    尝试使用 datetime.strptime() 函数进行转换。

    在您的 ex='27-Sep-2018' 中,它看起来像这样:

    from datetime import datetime
    ex='27-Sep-2018'
    date = datetime.strptime(ex, '%d-%b-%Y')
    

    然后:

    date.days 
    

    将存储结果(类型 - int)

    【讨论】:

      【解决方案4】:

      【讨论】:

        猜你喜欢
        • 2018-06-23
        • 2016-11-23
        • 1970-01-01
        • 2020-04-28
        • 2018-10-02
        • 2018-03-12
        • 1970-01-01
        • 2014-09-05
        • 2012-10-12
        相关资源
        最近更新 更多