从 DateTime Pandas 系列中提取小时

问题描述

我有一个 Pandas 系列的 DateTime

>> s
0             NaT
3        23:00:42
26            NaT
53       23:58:58
89       01:06:27
           ...   
20215         NaT
20217         NaT
20239    23:28:38
20246         NaT
20270         NaT

我首先使用以下方法删除 NaT:

s.dropna()
3        23:00:42
53       23:58:58
89       01:06:27
97       01:18:36
195      05:43:07
           ...   
20132    19:21:20
20141    20:08:01
20152    20:21:01
20199    22:25:50
20239    23:28:38

现在我尝试从系列中获取时间,但不知道该怎么做。

解决方法

如果 sSeries 则使用将值转换为日期时间,然后提取小时数:

s = pd.to_datetime(s.astype(str)).dt.hour

或者获取前 2 个值并转换为浮点数:

s = s.str[:2].astype(float)

如果使用列:

df['hour'] = pd.to_datetime(df['col'].astype(str)).dt.hour

或者:

df['hour'] = df['col'].str[:2].astype(float)
,

试试这个:

s['hour'] = s['time'].apply(lambda x: x[3:5])
,

有很多方法。我会这样做:

s = pd.Series(pd.to_datetime(x).hour for x in s)