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

时间:2014-07-04 05:11:13

标签: python pandas

我正在使用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

我不想要年份和日期信息,只想要时间。我该如何删除它。感谢。

6 个答案:

答案 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.minutetime.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)