如何创建没有“日期”部分的日期时间列?

时间:2017-06-07 09:57:22

标签: python pandas datetime

我有一个数据框,其中有一个名为'Time'的列,如下所示(HH:MM:SS:fffff)。

>>> df['Time']
0        09:42:29:75284
1        09:42:29:95584
2        09:42:31:15036
3        09:42:35:15138
4        09:42:35:95491
5        09:42:43:55414
6        09:42:45:35866
7        09:42:46:74638
8        09:42:47:35582
9        09:42:47:74774
10       09:42:48:94582
...
Name: Time, Length: 18924, dtype: object

我想将其类型更改为datetime,以便更容易计算。是否可以使用pandas.to_datetime将其类型更改为没有日期的日期时间?

2 个答案:

答案 0 :(得分:1)

您可以将其转换为timedelta64[ns] dtype:

来源DF:

In [164]: df
Out[164]:
              Time
0   09:42:29:75284
1   09:42:29:95584
2   09:42:31:15036
3   09:42:35:15138
4   09:42:35:95491
5   09:42:43:55414
6   09:42:45:35866
7   09:42:46:74638
8   09:42:47:35582
9   09:42:47:74774
10  09:42:48:94582

In [165]: df.dtypes
Out[165]:
Time    object   # <-------- NOTE!
dtype: object

转换:

In [166]: df.Time = pd.to_timedelta(df.Time.str.replace(r'\:(\d+)$', r'.\1'),
                                    errors='coerce')

In [167]: df
Out[167]:
              Time
0  09:42:29.752840
1  09:42:29.955840
2  09:42:31.150360
3  09:42:35.151380
4  09:42:35.954910
5  09:42:43.554140
6  09:42:45.358660
7  09:42:46.746380
8  09:42:47.355820
9  09:42:47.747740
10 09:42:48.945820

In [168]: df.dtypes
Out[168]:
Time    timedelta64[ns]   # <-------- NOTE!
dtype: object

答案 1 :(得分:1)

请参阅python to_datetime文档。

import pandas as pd        
df = pd.DataFrame({'Time': ['09:42:29:75284','09:42:29:95584','09:42:31:15036']})

   df
Out[]: 
             Time
0  09:42:29:75284
1  09:42:29:95584
2  09:42:31:15036

您可以通过指定格式将其转换为日期时间格式:

pd.to_datetime(df['Time'], format='%H:%M:%S:%f')
Out[]: 
0   1900-01-01 09:42:29.752840
1   1900-01-01 09:42:29.955840
2   1900-01-01 09:42:31.150360
Name: Time, dtype: datetime64[ns]

但这样做也会添加日期1900-01-01。