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