如何从数据库时间列的字符向量提取含毫秒的时间至新向量?
提取特定格式时间列到新向量的解决方案
以下分R和Python两种常用数据处理场景给出具体实现:
R语言实现
假设你的数据框名为df,时间列名为time_col,可以通过以下两种方式解析时间格式:
方法1:使用lubridate包(推荐)
# 首次使用需安装包 install.packages("lubridate") library(lubridate) # 解析时间列生成新向量,tz可按需指定时区(如"Asia/Shanghai") new_time_vec <- dmy_hms(df$time_col, tz = "UTC")
dmy_hms会自动识别dd/mm/yy hh:mm:ss格式,毫秒部分会被正确解析并保留。
方法2:使用基础R的strptime函数
new_time_vec <- strptime(df$time_col, format = "%d/%m/%y %H:%M:%S:%OS", tz = "UTC")
格式符说明:%d=日,%m=月,%y=两位年份,%H=24小时制小时,%M=分钟,%S=秒,%OS=毫秒。
Python语言实现
假设使用pandas数据框df,时间列名为time_col:
方法1:使用pandas(推荐)
import pandas as pd # 解析时间列生成datetime类型的新向量 new_time_vec = pd.to_datetime(df['time_col'], format='%d/%m/%y %H:%M:%S:%f')
%f对应毫秒(支持3位输入),解析后得到的是datetime64类型的向量,可直接用于时间计算、筛选等操作。
方法2:基础Python(无pandas依赖)
from datetime import datetime # 若为pandas列先转为列表,原始数据为列表则直接使用 time_list = df['time_col'].tolist() new_time_vec = [datetime.strptime(t, '%d/%m/%y %H:%M:%S:%f') for t in time_list]
生成的是datetime对象组成的列表,可直接进行时间相关操作。
内容的提问来源于stack exchange,提问作者Daisy
相关产品推荐
相关产品推荐

