我有一个数据集,其中有一个列名为“时间”的类型对象。有一些行作为10 10:00和其他作为1000。我如何转换这个列的时间格式。
weather['Time'] = pd.to_datetime(weather['Time'], format='%H:%M').dt.Time
这是我使用的代码。2我得到这个错误,ValueError:时间数据“10”与格式“%H:%M”不匹配(匹配)
6ljaweal1#
您可以先将列转换为所需的时间格式,如下所示
weather= pd.DataFrame(['1000','10:00','10','1000'],columns=list("Time")) def convert_time(x): if len(x) == 2: return f'{x}:00' if ':' not in x: return x[:2] + ':' + x[2:] return x wheather.Time= wheather.Time.apply(convert_time) wheather.Time Out[1]: 0 10:00 1 10:00 2 10:00 3 10:00
将其转换为日期时间
wheather.Time = pd.to_datetime(wheather.Time)
只有时间成分
wheather.Time.dt.time Out[92]: 0 10:00:00 1 10:00:00 2 10:00:00 3 10:00:00
dgsult0t2#
另一种可能的解决方案基于以下思想:1.如果有:,则用空字符串替换。1.右填充零,使所有条目将有4位数。1.使用pd.to_datetime转换为所需的时间格式。
:
pd.to_datetime
weather = pd.DataFrame({'Time': ['20', '1000', '12:30', '0930']}) pd.to_datetime(weather['Time'].str.replace(':', '').str.pad( 4, side='right', fillchar='0'), format='%H%M').dt.time
输出:
0 20:00:00 1 10:00:00 2 12:30:00 3 09:30:00 Name: Time, dtype: object
2条答案
按热度按时间6ljaweal1#
您可以先将列转换为所需的时间格式,如下所示
将其转换为日期时间
只有时间成分
dgsult0t2#
另一种可能的解决方案基于以下思想:
1.如果有
:
,则用空字符串替换。1.右填充零,使所有条目将有4位数。
1.使用
pd.to_datetime
转换为所需的时间格式。输出: