使用pandas.to_datetime进行转换时可以设置日期吗?

时间:2018-03-07 04:38:37

标签: python pandas hdf5

我有一个如下所示的数组:

array([(b'03:35:05.397191'),
    (b'03:35:06.184700'),
    (b'03:35:08.642503'), ...,
    (b'05:47:15.285806'),
    (b'05:47:20.189460'),
    (b'05:47:30.598514')],
    dtype=[('Date', 'S15')])

我想使用to_datetime将其转换为数据框。我可以通过这样做来做到这一点:

df = pd.DataFrame( array )
df['Date'] = pd.to_datetime( df['Date'].str.decode("utf-8") )

>>> df.Date
0      2018-03-07 03:35:05.397191
1      2018-03-07 03:35:06.184700
2      2018-03-07 03:35:08.642503
3      2018-03-07 03:35:09.155030
4      2018-03-07 03:35:09.300029
5      2018-03-07 03:35:09.303031

问题是它会自动将日期设置为今天。是否可以将日期设置为不同的日期,例如2015-01-25?

4 个答案:

答案 0 :(得分:3)

不使用pd.to_datetime,而是使用pd.to_timedelta并添加日期。

pd.to_timedelta(df.Date.str.decode("utf-8")) + pd.to_datetime('2017-03-15')

0   2017-03-15 03:35:05.397191
1   2017-03-15 03:35:06.184700
2   2017-03-15 03:35:08.642503
3   2017-03-15 05:47:15.285806
4   2017-03-15 05:47:20.189460
5   2017-03-15 05:47:30.598514
Name: Date, dtype: datetime64[ns]

答案 1 :(得分:2)

试试这个:

df['Date'] = pd.to_datetime( df['Date'].str.decode("utf-8") ).apply(lambda x: x.replace(year=2015, month=1, day=25))

将@ Wen的解决方案纳入正确性:)

答案 2 :(得分:1)

您可以使用完整的日期时间和解析创建一个字符串,如:

df = pd.DataFrame( array )
df['Date'] = pd.to_datetime( '20150125 ' + df['Date'].str.decode("utf-8") )

答案 3 :(得分:0)

嗯,好像有用了: - )

pd.to_datetime(df['Date'].str.decode("utf-8"))-(pd.to_datetime('today')-pd.to_datetime('2015-01-25'))
Out[376]: 
0   2015-01-25 03:35:05.397191
1   2015-01-25 03:35:06.184700
2   2015-01-25 03:35:08.642503
3   2015-01-25 05:47:15.285806
4   2015-01-25 05:47:20.189460
5   2015-01-25 05:47:30.598514
Name: Date, dtype: datetime64[ns]