我正在使用pandas数据帧。有一个特定的列有时间信息。
原始数据喜欢这样:
5:15am
5:28am
6:15am
所以我需要将原始数据转换为datetime格式:
format = '%I:%M%p'
dataset['TimeStamp'] = pd.to_datetime(dataset['TimeStamp'],format)
然而,我得到了:
2014-07-04 05:15:00
2014-07-04 05:28:00
2014-07-04 06:15:00
我不想要年份和日期信息,只想要时间。我该如何删除它。感谢。
答案 0 :(得分:6)
以下内容将转换为datetime.time()对象:
dataset['TimeStamp'] = pd.Series([val.time() for val in dataset['TimeStamp']])
输出
TimeStamp
0 05:15:00
1 05:28:00
2 06:15:00
答案 1 :(得分:6)
从版本0.17.0
开始,你可以做到
dataset['TimeStamp'].dt.time
对于早于0.17.0
的版本:
您只需调用apply
并访问datetime对象上的time
函数,就可以像这样创建列,而无需进行后期处理:
In [143]:
dataset['TimeStamp'] = pd.to_datetime(dataset['TimeStamp'],format).apply(lambda x: x.time())
dataset
Out[143]:
TimeStamp
0 05:15:00
1 05:28:00
2 06:15:00
答案 2 :(得分:3)
只需使用datetime.time()
功能
datetime.time()
返回时间对象具有相同的小时,分钟,秒和微秒。 tzinfo是None。另见方法timetz()。
这将返回datetime.time
个对象,您可以使用time.hour
time.minute
和time.second
属性访问数据。
答案 3 :(得分:0)
有一种使用熊猫的简单方法,尽管大多数(如果不是全部)解决方案都是正确的
df.TimeStamp = pd.to_datetime(df.TimeStamp).dt.strftime('%H:%M')
答案 4 :(得分:0)
your_date_df.dt.time
假设您的日期和时间列为df['arrived_date']
:
0 2015-01-06 00:43:00
1 2015-01-06 07:56:00
2 2015-01-06 11:02:00
3 2015-01-06 11:22:00
4 2015-01-06 15:27:00
Name: arrived_date, dtype: datetime64[ns]
只熊猫,您只需要这样做:
df['arrived_time']=df['arrived_date'].dt.time
新列df['arrived_time']
如下所示:
0 00:43:00
1 07:56:00
2 11:02:00
3 11:22:00
4 15:27:00
Name: arrived_time, dtype: object
df['arrived_time']
不再是datetime64
类型,该列的类型只是熊猫object
答案 5 :(得分:-2)
数据集[ '时间戳'] =数据集[ '时间戳']。str.slice(11,18)