Python 如何删除列中的日期信息,只保留时间

Python 如何删除列中的日期信息,只保留时间,python,pandas,Python,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 我不需要年份和日期信息

我正在使用熊猫数据帧。有一个特定的列包含时间信息

原始数据如下所示:

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

我不需要年份和日期信息,只需要时间。我怎样才能删除它。谢谢。

以下内容将转换为datetime.time()对象:

输出

  TimeStamp
0  05:15:00
1  05:28:00
2  06:15:00
只要使用这个函数

datetime.time()
返回具有相同时、分、秒和微秒的时间对象。tzinfo没有。另请参见方法timetz()


这将返回一个
datetime.time
对象,您可以使用
time.hour
time.minute
time.second
属性访问数据。

自版本
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

dataset['TimeStamp']=dataset['TimeStamp'].str.slice(11,18)

使用pandas有一种更简单的方法,尽管大多数(如果不是所有)解决方案都是正确的

df.TimeStamp = pd.to_datetime(df.TimeStamp).dt.strftime('%H:%M')
您的日期时间
假设带有日期和时间的列是
df['arrived\u 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\u 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['arrized\u time']
不再是
datetime64
类型,该列的类型只是一个pandas
对象
更好地执行
pd.DatetimeIndex(dateset['TimeStamp')。time
相同的结果though@Jeff谢谢这对我有效,而不是公认的解决方案。结果我想要
val.date()
答案给了我灵感:)
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