如何移除Pandas DataFrame中时间字符串的首尾零?
处理时间字符串的前导零和尾随零
可以用Pandas的字符串正则替换功能实现需求,分两步处理即可:
- 移除每个时间分量(时、分、秒)的前导零
- 移除秒分量的尾随零
具体代码如下:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'time_col': ['02:10:41', '09:19:22', '10:55:46', '30:64:50'] }) # 第一步:去掉时、分、秒的前导零(比如02→2,09→9,不影响10、30这类两位数) df['Time'] = df['time_col'].str.replace(r'(^|:)0+(?=\d)', r'\1', regex=True) # 第二步:去掉秒部分的尾随零(比如50→5,不影响41、22这类无末尾零的) df['Time'] = df['Time'].str.replace(r'(?<=\d)0+$', '', regex=True) print(df)
运行后输出结果:
time_col Time 0 02:10:41 2:10:41 1 09:19:22 9:19:22 2 10:55:46 10:55:46 3 30:64:50 30:64:5
完全匹配你期望的输出。
补充说明
如果遇到秒分量是00的情况,上面的第二步会把它变成空字符串,导致结果格式变成xx:xx:,这时候可以再加一步处理:
# 处理秒为00的情况,补全为:0 df['Time'] = df['Time'].str.replace(r':$', ':0', regex=True)
这样就能保证时间格式始终完整。
内容的提问来源于stack exchange,提问作者NoobLearner
相关产品推荐
相关产品推荐

