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

wribegjk  于 2022-12-31  发布在  其他
关注(0)|答案(2)|浏览(78)

我有一个数据集,其中有一个列名为“时间”的类型对象。有一些行作为10 10:00和其他作为1000。我如何转换这个列的时间格式。

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

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

6ljaweal

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
dgsult0t

dgsult0t2#

另一种可能的解决方案基于以下思想:
1.如果有:,则用空字符串替换。
1.右填充零,使所有条目将有4位数。
1.使用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

相关问题