我在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
列的最简单方法是什么?
答案 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