Pandas数据框架自定义格式化字符串到时间



我有一个看起来像这样的数据框架

DEP_TIME
0         1851
1         1146
2         2016
3         1350
4          916
...
607341     554
607342     633
607343     657
607344     705
607345     628

我需要得到这一列DEP_TIME中的每个值具有格式hh:mm。所有细胞均为string型,并可保持该类型。

一些单元格只缺少冒号(第0至3行),其他单元格也缺少前导0(第4+行)。有些单元格是空的,理想情况下应该有字符串值0。

我需要以一种有效的方式来做,因为我有几百万条记录。我该怎么做呢?

使用to_datetimeSeries.dt.strftime:

df['DEP_TIME'] = (pd.to_datetime(df['DEP_TIME'], format='%H%M', errors='coerce')
.dt.strftime('%H:%M')
.fillna('00:00'))
print (df)
DEP_TIME
0         18:51
1         11:46
2         20:16
3         13:50
4         09:16
607341    05:54
607342    06:33
607343    06:57
607344    07:05
607345    06:28
import re
d = [['1851'],
['1146'],
['2016'],
['916'],
['814'],
[''],
[np.nan]]
df = pd.DataFrame(d, columns=['DEP_TIME'])
df['DEP_TIME'] = df['DEP_TIME'].fillna('0')
df['DEP_TIME'] = df['DEP_TIME'].apply(lambda y: '0' if y=='' else re.sub(r'(d{1,2})(d{2})$', lambda x: x[1].zfill(2)+':'+x[2], y))
df
DEP_TIME
0   18:51
1   11:46
2   20:16
3   09:16
4   08:14
5   0

最新更新