PANDAS-转换HH:MM和HH:MM:SS到标准HH:MM:SS in Python



我有一个熊猫列"小时",它有小时的时间,但有些则列为(小时:分钟) 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"到那些没有它的字符串,然后转换为 datetimetimedelta(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']))

相关内容

  • 没有找到相关文章

最新更新