如何在Python中将HH:MM:SS格式字符串转换为整数?
将HH:MM:SS格式字符串转为整数小时的方法
针对你遇到的问题,直接用astype(int)无法转换带冒号的时间字符串,需要先提取小时部分再转整数,以下是几种可行方案:
方法1:字符串分割提取小时
通过冒号分割字符串,取第一个元素后转换为整数:
import pandas as pd data = ['01:00:00','02:00:00','03:00:00','04:00:00'] df = pd.DataFrame(data, columns=['Numbers']) df['Hour'] = df['Numbers'].str.split(':').str[0].astype(int)
执行后Numbers列的01:00:00会转为整数1,02:00:00转为2,以此类推。
方法2:利用datetime工具提取小时
先将字符串转为datetime类型,再提取小时属性,这种方式更适合后续有时间相关操作的场景:
df['Hour'] = pd.to_datetime(df['Numbers'], format='%H:%M:%S').dt.hour
该方法会自动处理前导零,直接返回整数格式的小时数。
方法3:正则表达式提取数字
用正则提取字符串开头的数字部分,适配格式略有变化的情况(比如无前置零的1:00:00):
df['Hour'] = df['Numbers'].str.extract('^(\d+)').astype(int)
补充说明
astype(int)直接报错的原因是01:00:00属于非数字格式的字符串,Python无法直接将包含冒号的字符串转换为整数,必须先提取出纯数字的小时部分再进行类型转换。
内容的提问来源于stack exchange,提问作者Ismael Pauchner
相关产品推荐
相关产品推荐

