我有一个名为"time"的列,其中某些行的 10:00 仅为 10,而其他行仅为 1000。如何将此列转换为时间格式



我有一个数据集,其中有一个列名为"时间"对象类型的。有些行表示10,有些行表示1000。如何将此列转换为时间格式

weather['Time'] = pd.to_datetime(weather['Time'], format='%H:%M').dt.Time

这是我使用的代码。我得到这个错误,ValueError:时间数据'10'不匹配格式'%H:%M'(匹配)

您可以先将列转换为所需的时间格式,如下所示

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

另一种可能的解决方案,基于以下思路:

  1. :存在时,将其替换为空字符串

  2. 右pad加0,这样所有条目都是4位。

  3. 使用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

相关内容

  • 没有找到相关文章

最新更新