首页 > 解决方案 > 使用切片格式化时间 str

问题描述

我有一些时间数据需要转换为适当的日期时间

data['dep_time'] = pd.to_datetime(data['dep_time'], format='%H:%M').dt.time

问题是在每个单元格中我的位数不一致

我可能有“1714”或“714”或只有“6”。

我想使用格式将每个 str 更改为 00:00 格式,但我必须从 str 的后面开始,并假设如果我只有“6”,则表示“00:06”

        year  month  day  dep_time  dep_delay  arr_time  arr_delay  cancelled  \
103992  2014      5   11      1013         -2      1247        -13          0   
103993  2014      5   11      1929         -1      2215        -24          0   
103994  2014      5   11      1117          5      1355          9          0   
103995  2014      5   11       736        -10       924        -18          0   
103996  2014      5   11      1340          0      1647         10          0   

标签: pythonpandas

解决方案


尝试使用str.pad

df=pd.DataFrame({'time':['1', '12', '123', '1234']})
df.time.str.pad(4,side='left',fillchar='0')
Out[188]: 
0    0001
1    0012
2    0123
3    1234
Name: time, dtype: object

或者rjust

df.time.str.rjust(4,fillchar='0')
Out[190]: 
0    0001
1    0012
2    0123
3    1234
Name: time, dtype: object

更新

pd.to_datetime(df.time.str.pad(4,side='left',fillchar='0'),format='%H%M').dt.time
Out[199]: 
0    00:01:00
1    00:12:00
2    01:23:00
3    12:34:00
Name: time, dtype: object

推荐阅读