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

Is possible to set a date when converting with pandas.to_datetime?

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

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?

试试这个:

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

结合@Wen 的正确性解决方案:)

您可以创建一个包含完整 date-time 的字符串并进行解析,例如:

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

不使用 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]

嗯,好像有用:-)

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]