如何将含时分/时分秒字符串的CSV导入为Pandas的Time类型
导入CSV时在Pandas中保留纯时间类型(无日期)
Pandas没有原生的"纯时间"数据类型,但可以通过以下两种方法实现仅保留时分秒、不附加日期的需求:
方法一:先导入为字符串,再转换为纯时间
先不解析日期列,导入后单独处理时间列:
import pandas as pd # 读取CSV,不指定parse_dates,时间列以字符串形式导入 df = pd.read_csv("your_data.csv") # 转换分钟级时间列(格式HH:MM) df["time_minute"] = pd.to_datetime(df["time_minute"], format="%H:%M").dt.time # 转换秒级时间列(格式HH:MM:SS) df["time_second"] = pd.to_datetime(df["time_second"], format="%H:%M:%S").dt.time
转换后列中的元素是Python的datetime.time对象,仅包含时分秒信息。
方法二:导入时直接使用转换器处理
利用read_csv的converters参数,在导入阶段完成时间转换:
import pandas as pd from datetime import datetime def parse_time(time_str): # 根据字符串长度匹配时间格式 if len(time_str) == 5: return datetime.strptime(time_str, "%H:%M").time() elif len(time_str) == 8: return datetime.strptime(time_str, "%H:%M:%S").time() # 导入时指定转换器处理目标时间列 df = pd.read_csv("your_data.csv", converters={"time_minute": parse_time, "time_second": parse_time})
补充说明
上述两种方法得到的datetime.time对象支持常见的时间操作,比如时间比较、提取时/分/秒数值等,完全满足纯时间场景的使用需求。
内容的提问来源于stack exchange,提问作者user1015767
相关产品推荐
相关产品推荐

