首页 > 解决方案 > 格式化 df.to_datetime 导致 NaT 条目

问题描述

我的最终目标是绘制特定时间范围的图(仅显示小时和分钟)。这就是我原来的 df 的样子:

Herzrate (bpm)  Zeit
0   NaN     2019-9-15 7:55
1   NaN     2019-9-15 7:55
2   NaN     2019-9-15 7:55
...
8   85.0    2019-9-15 7:55
9   85.0    2019-9-15 7:55
10  85.0    2019-9-15 7:55
...
49925   106.0   2019-9-15 21:47

首先,我删除 NaT 行,然后我想将对象转换为 datetime 以设置范围,稍后再进行。

df.dropna(axis=0, how='any',inplace=True)
pd.to_datetime(df['Zeit'],format = '%H:%M', errors='coerce')

不幸的是,所有条目都转换为 NaT

...
49921   NaT
49922   NaT
49923   NaT
49924   NaT
49925   NaT
Name: Zeit, Length: 49515, dtype: datetime64[ns]

我真的不明白我的错误。

转换而不是format=似乎首先工作,但是当我试图用它打印小时和数字时 print(df['Zeit'].dt.strftime('%H:%M')) 会导致以下错误:“只能使用带有 datetimelike 值的 .dt 访问器”

编辑: Erfans 解决方案工作得很好。感谢那!

标签: pythonpandas

解决方案


format错了,你必须在将其转换为日期时间后访问hourandminute属性:

pd.to_datetime(df['Zeit'],errors='coerce').dt.strftime('%H:%M')

推荐阅读