我希望看到一个带有天数的int
。但是,我看到了 NaN、两行和 float64。你能告诉我我在这里做错了什么吗?
>>> event_start_date = event_data['start_date'].loc[event_data['event_id'] == event_id]
>>> last_order_date = event_orders['ds'].tail(1)
>>> print(last_order_date)
1493 2019-05-05 06:28:09.699094
Name: ds, dtype: datetime64[ns]
>>> print(event_start_date)
0 2019-10-04 02:00:00
Name: start_date, dtype: datetime64[ns]
>>> days_to_event = (event_start_date - last_order_date).dt.days
>>> print(days_to_event)
0 NaN
1061 NaN
dtype: float64
最佳答案
问题是不同的索引值,如果减去 pandas 尝试对齐索引,并且因为不匹配而创建缺失值。
解决方案是创建相同的索引值,例如通过 Series.reset_index
与drop=True
:
days_to_event = (event_start_date.reset_index(drop=True) -
last_order_date.reset_index(drop=True)).dt.days
<小时/>
或者使用标量 - 按位置选择第一个值 Series.iat
:
last_order_date = event_orders['ds'].tail(1)
更改为:
last_order_date = event_orders['ds'].iat[0]
event_start_date = event_start_date.iat[0]
days_to_event = (event_start_date - last_order_date).days
另一个想法是组合 - 用标量减去一项 Series
- 输出是一项 Series
:
last_order_date = event_orders['ds'].iat[0]
days_to_event = (event_start_date - last_order_date).dt.days
关于python - Pandas:距某个日期还剩多少天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57123972/