从熊猫中的时间列中提取小时

时间:2018-10-29 12:48:02

标签: python pandas datetime

假设我具有以下数据集:

enter image description here

我将如何创建一个新的列,该时间是小时?

例如,下面的代码可单独使用,但我无法将其概括为熊猫中的一列。

t = datetime.strptime('9:33:07','%H:%M:%S')
print(t.hour)

3 个答案:

答案 0 :(得分:2)

使用to_datetimedt.hour约会:

df = pd.DataFrame({'TIME':['9:33:07','9:41:09']})

#should be slowier
#df['hour'] = pd.to_datetime(df['TIME']).dt.hour

df['hour'] = pd.to_datetime(df['TIME'], format='%H:%M:%S').dt.hour
print (df)
      TIME  hour
0  9:33:07     9
1  9:41:09     9

如果想使用datetime列中的TIME s,可以分配回来:

df['TIME'] = pd.to_datetime(df['TIME'], format='%H:%M:%S')

df['hour'] = df['TIME'].dt.hour
print (df)
                 TIME  hour
0 1900-01-01 09:33:07     9
1 1900-01-01 09:41:09     9

答案 1 :(得分:0)

我的建议:

df = pd.DataFrame({'TIME':['9:33:07','9:41:09']})
df['hour']= df.TIME.str.extract("(^\d+):", expand=False)
  • “ str.extract(...)”是向量化函数,可提取正则表达式模式(在我们的示例中为“(^ \ d +):“,这是时间的小时数),并通过以下方式返回Pandas Series对象:指定参数“ expand = False”
  • 结果存储在“小时”列中

答案 2 :(得分:0)

您可以使用extract()两次来突出显示“小时”列

df['hour'] = df. TIME. str. extract("(\d+:)")
df['hour'] = df. hour. str. extract("(\d+)")