Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧自定义格式字符串转换为时间_Python_Pandas_Dataframe - Fatal编程技术网

Python 将数据帧自定义格式字符串转换为时间

Python 将数据帧自定义格式字符串转换为时间,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个像这样的数据框 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类型,并且可以保

我有一个像这样的数据框

          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

我需要以一种有效的方式来做,因为我有几百万张唱片。如何操作?

与以下一起使用:

重新导入
d=['1851'],
['1146'],
['2016'],
['916'],
['814'],
[''],
[np.nan]]
df=pd.DataFrame(d,列=['DEP_TIME'])
df['DEP_TIME']=df['DEP_TIME'].fillna('0')
df['DEP_TIME']=df['DEP_TIME'].apply(lambda y:'0'如果y==''else re.sub(r'(\d{1,2})(\d{2})$,lambda x:x[1]。zfill(2)+':'+x[2],y))
df
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
    DEP_TIME
0   18:51
1   11:46
2   20:16
3   09:16
4   08:14
5   0