将熊猫的DatetimeIndex转换为datetime.date?

时间:2018-09-11 14:39:21

标签: python pandas

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

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

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

我遇到以下错误:

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

我试图弄清楚如何使它生效,并将天数转换为整数?

TIA

3 个答案:

答案 0 :(得分:4)

我认为问题可能是由于您从日期对象(不包括时间)中减去了熊猫的datetime对象。您可以尝试以下方法:

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

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

答案 1 :(得分: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相同的对象类型。

答案 2 :(得分:1)

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

在您的ex ='2018年9月27日'中,看起来像这样:

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

然后:

date.days 

将存储结果(类型-int)

相关问题