熊猫.dt.hour格式化

时间:2017-03-23 13:25:45

标签: python pandas

我在pandas数据框中有一个datetime64[ns]格式对象。

我可以使用此列通过以下方式计算小时数:

df['hour'] = df['datetime'].dt.hour

返回一个整数。例如:

datetime                        hour
19-10-2015 2015-10-19 01:00:00  1  

hour时间格式输出01:00:00列的最简单方法是什么?

3 个答案:

答案 0 :(得分:7)

我认为你需要dt.time

df['hour'] = df['datetime'].dt.time
print (df)
             datetime      hour
0 2015-10-19 01:00:00  01:00:00

但是如果需要将日期时间截断为几小时:

df['hour'] = df['datetime'].values.astype('<M8[h]')
df['hour'] = df['hour'].dt.time
print (df)
             datetime      hour
0 2015-10-19 01:00:00  01:00:00
1 2015-10-19 01:50:00  01:00:00

有点破解 - strftime并添加字符串:00:00

df['hour'] = df['datetime'].dt.strftime('%H').add(':00:00')
print (df)
             datetime      hour
0 2015-10-19 01:00:00  01:00:00
1 2015-10-19 01:50:00  01:00:00

答案 1 :(得分:2)

@jezrael已经覆盖了...这个答案看起来就像.dt.time但是是一个字符串

df.assign(hour=df.datetime.dt.strftime('%H:%M:%S'))

             datetime      hour
0 2015-10-19 01:00:00  01:00:00

答案 2 :(得分:0)

您可以将其转换为对象,然后使用str.split('')将行分为日期部分和时间部分,然后可以将每个部分分配给一列或替换当前部分。

df['date'], df['hour'] = df['datetime'].str.split(' ', 1).str
print (df)
         datetime       date         hour
0 2015-10-19 01:00:00   2015-10-19   01:00:00
1 2015-10-19 01:50:00   2015-10-19   01:50:00