13

I am using pandas dataframe. there is a specific column has time information.

the raw data likes this:

5:15am
5:28am
6:15am

so I need to convert the raw data into datetime format:

format = '%I:%M%p'
dataset['TimeStamp'] = pd.to_datetime(dataset['TimeStamp'],format)

However, I got:

2014-07-04 05:15:00
2014-07-04 05:28:00
2014-07-04 06:15:00

I don't want the year and date information, just want time. How can I remove it. Thanks.

sundar nataraj
  • 8,524
  • 2
  • 34
  • 46
lserlohn
  • 5,878
  • 10
  • 34
  • 52

6 Answers6

15

Since version 0.17.0 you can just do

dataset['TimeStamp'].dt.time

For versions older than 0.17.0:

You can just call apply and access the time function on the datetime object create the column initially like this without the need for post processing:

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
EdChum
  • 376,765
  • 198
  • 813
  • 562
11

The following will convert what you have to datetime.time() objects:

dataset['TimeStamp'] = pd.Series([val.time() for val in dataset['TimeStamp']])

Output

  TimeStamp
0  05:15:00
1  05:28:00
2  06:15:00
Woody Pride
  • 13,539
  • 9
  • 48
  • 62
4

Just use the datetime.time() function

datetime.time()
Return time object with same hour, minute, second and microsecond. tzinfo is None. See also method timetz().

This will return a datetime.time object and you can access the data with the time.hour time.minute and time.second attributes.

Dan Oberlam
  • 2,435
  • 9
  • 36
  • 54
3

your_date_df.dt.time

Lets say that your column with the date ans time is 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]

Whith pandas, you just need to do:

df['arrived_time']=df['arrived_date'].dt.time 

The new column df['arrived_time'] will look like this:

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

Observe that the new column, df['arrived_time'], is no longer a datetime64 type, the type of the column is just a pandas object

pink.slash
  • 1,817
  • 15
  • 14
2

There's a simpler way to do it using pandas, although most, if not all solutions are correct

df.TimeStamp = pd.to_datetime(df.TimeStamp).dt.strftime('%H:%M')
john doe
  • 31
  • 2
-2

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

K.Hakan
  • 19
  • 7