【发布时间】:2019-05-21 08:05:17
【问题描述】:
我有一个 DataFrame df_holiday,我想选择该行,该行包含距今天日期最近的日期,以便提取假日名称。
+----------+---------------------+
| date | name |
+----------+---------------------+
| 01012019 | Neujahr |
| 06012019 | Heilige Drei Könige |
| 19042019 | Karfreitag |
| 22042019 | Ostermontag |
| 01052019 | Tag der Arbeit |
| 10062019 | Pfingstmontag |
+----------+---------------------+
如果我执行type(df_holiday['date'][0]),它会输出str
现在我想使用这个将列转换为日期时间格式:
import datetime
df_holiday['date'] = df_holiday['date'].apply(lambda x: datetime.datetime.strptime(x, '%d%m%Y'))
这里的第一个问题:Doc 说它会返回一个日期时间,但在我的情况下我得到一个时间戳,为什么?
type(df_holiday['date'][0])
pandas._libs.tslibs.timestamps.Timestamp
print(df_holiday['date'][0]
Timestamp('2019-01-01 00:00:00')
我从dawg 找到了这篇文章,他建议了以下例程:
min([d for d in df_holiday['date'] if d> datetime.date.today()], key=lambda s:
datetime.datetime.strptime(s, "%d%m%Y").date()-datetime.date.today())
由于日期列中的值是时间戳,我得到了一个
TypeError:无法将“时间戳”类型与“日期”类型进行比较
如果可以将日期列转换为适当的日期时间格式而不是时间戳格式,我认为这将起作用。 我怎样才能做到这一点? 或者我的情况有更好的解决方案吗?
【问题讨论】: