我有一个熊猫列"小时",它有小时的时间,但有些则列为(小时:分钟) 1:00
有些是 24:00:00
。我想将它们全部转换为AS,1:00:00
(即小时:分钟:秒)。我尝试转换为to_datetime
,但没有运气。感谢您的帮助。
df['hour'] = pd.to_datetime(df['hour'], format='%H:%M%:%S', errors='ignore')
如果您想与日期和时间一起工作,则可以使用strftime()并铸造到日期时间:
df1 = pd.DataFrame({'hour': ['21:51','11:07:20', '08:33:16', '09:01']})
df1['Clean_hour'] = (df1.hour.apply(lambda x: pd.to_datetime(x).strftime('%H:%M:%S'))
.apply(lambda x: pd.to_datetime(x)))
print(df1,df1.dtypes)
hour Clean_hour
0 21:51 21:51:00
1 11:07:20 11:07:20
2 08:33:16 08:33:16
3 09:01 09:01:00
hour object
Clean_hour datetime64[ns]
您可以使用 numpy.where
添加taxting":00"到那些没有它的字符串,然后转换为 datetime
或 timedelta
(ever)。
df = pd.DataFrame({'hour': ['1:00', '23:15:00']})
df
hour
0 1:00
1 23:15:00
pd.to_timedelta(np.where(df.hour.str.count(':') == 1, df.hour + ':00', df.hour))
# TimedeltaIndex(['01:00:00', '23:15:00'], dtype='timedelta64[ns]', freq=None)
df['hour'] = pd.to_timedelta(
np.where(df['hour'].str.count(':') == 1, df['hour'] + ':00', df['hour']))