无法将另一日期时间列相减,无法使用类型为dtype('S1')和dtype('<M8 [ns]')的操作数

时间:2019-06-23 06:00:19

标签: python pandas datetime

我有两个pandas列,都转换为datetime格式,并且不能互相减去。

console.log(...)

可以进行减法的格式似乎是正确的,但随后出现此错误:

df['date_listed'] = pd.to_datetime(df['date_listed'], errors='coerce').dt.floor('d')
df['date_unconditional'] = pd.to_datetime(df['date_unconditional'], errors='coerce').dt.floor('d')

print df['date_listed'][:5]
print df['date_unconditional'][:5]

0   2013-01-01
1   2013-01-01
2   2015-04-08
3   2016-03-24
4   2016-04-27
Name: date_listed, dtype: datetime64[ns]
0   2018-10-15
1   2018-06-12
2   2018-08-28
3   2018-08-29
4   2018-10-29
Name: date_unconditional, dtype: datetime64[ns]

我添加了error ='coerce',认为它可以解决问题,但没有解决。我希望对此有所帮助。

2 个答案:

答案 0 :(得分:0)

我认为您需要更改格式以与时间戳记区别。

例如:

fmt = '%Y-%m-%d'
date_listed = datetime.datetime.strptime('2013-01-01', fmt)
date_unconditional = datetime.datetime.strptime('2018-10-15', fmt)
print("{0} years, {1} months, {2} days" .format((b.year-a.year),(b.month-a.month),(b.day-a.day)))

o / p:

5 years, 0 months, 4 days

答案 1 :(得分:0)

如有必要,请更改第一列foir减去:

df['date_listed_to_sale'] = (df['date_unconditional'] - df['date_listed']).dt.days

或将第一列date_sold转换为日期时间:

df['date_sold'] = pd.to_datetime(df['date_sold'], errors='coerce').dt.floor('d')
df['date_listed_to_sale'] = (df['date_sold'] - df['date_listed']).dt.days