我想从一个包含GNSS times和许多其他数据的文件中读取时间。预期的结果是一个datetime数据类型的pandas数组(Index或Series),其中应用了数据集的日期。
在中间步骤中,我有一个格式为hhmmss
的时间戳列表,其中混合了一些无效数据:
import datetime as dt
import pandas as pd
date = dt.date(2023, 5, 9)
times_from_file = [",,,,,,"¸ "123456", "123457", "123458", "123459", "123500"]
我可以通过这个冗长的代码片段获得所需的输出:
datetimes = pd.to_datetime(
times_from_file, format="%H%M%S", errors="coerce"
).map(
lambda datetime: pd.NaT
if pd.isnull(datetime)
else dt.datetime.combine(date, datetime.time())
)
输出:
DatetimeIndex([ 'NaT', '2023-05-09 12:34:56',
'2023-05-09 12:34:57', '2023-05-09 12:34:58',
'2023-05-09 12:34:59', '2023-05-09 12:35:00'],
dtype='datetime64[ns]', freq=None)
然而,这看起来过于复杂。我希望这个问题可以用pd.to_timedelta
来解决,但不幸的是,它不允许传递格式字符串。甚至pandas.Index.map
的na_action
关键字也被忽略了--这就是为什么我使用if pd.isnull(datetime)
。
有没有更简单的方法来做到这一点,最好是利用专门构建的Pandas函数或方法?
1条答案
按热度按时间6pp0gazn1#
将
times_from_file
转换为Series(如果尚未转换):