你需要:
usg = pd.DataFrame({'duration':['7h 39m 40s','15h 39m 40s','39m 40s']})
print (usg)
usg['duration'] = np.where(usg.duration.str.contains('h'),
pd.to_datetime(usg['duration'], format='%Hh %Mm %Ss', errors='coerce'),
pd.to_datetime(usg['duration'], format='%Mm %Ss',errors='coerce'))
print (usg)
duration
0 1900-01-01 07:39:40
1 1900-01-01 15:39:40
2 1900-01-01 00:39:40
另一种解决方案:
usg['duration'] = pd.to_datetime(usg['duration'].where(usg.duration.str.contains('h'),
'0h '+ usg['duration']),format='%Hh %Mm %Ss')
print (usg)
duration
0 1900-01-01 07:39:40
1 1900-01-01 15:39:40
2 1900-01-01 00:39:40
usg.loc[~usg.duration.str.contains('h'), 'duration'] = '0h '+ usg['duration']
usg['duration'] = pd.to_datetime(usg['duration'], format='%Hh %Mm %Ss')
print (usg)
duration
0 1900-01-01 07:39:40
1 1900-01-01 15:39:40
2 1900-01-01 00:39:40