为了账号安全,请及时绑定邮箱和手机立即绑定

无法转换此列的数据时间(对象到时间)

无法转换此列的数据时间(对象到时间)

眼眸繁星 2022-08-11 17:48:51
我有一个如下数据框数据类型    usr_id  year0   t961    00:50:03.1580001   t964    03:25:572   t335    00:55:003   t829    00:04:25.714000usr_id    objectyear      objectdtype: object我想将年份列数据类型转换为日期时间。我使用了下面的代码。timefmt = "%H:%M"test['year'] = pd.to_datetime(    test['year'], format=timefmt, errors='coerce').dt.time我得到低于输出    usr_id  year0   t961    NaT1   t964    NaT2   t335    NaT3   t829    NaT如何将此列的数据时间(对象转换为日期时间)?我怎样才能放下秒和微秒?预期输出    usr_id   year0   t961    00:501   t964    03:252   t335    00:553   t829    00:04
查看完整描述

2 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

将to_datetime与 Series.dt.strftime 一起使用:


timefmt = "%H:%M"

test['year'] = pd.to_datetime(test['year'], errors='coerce').dt.strftime(timefmt)


print (test)

  usr_id   year

0   t961  00:50

1   t964  03:25

2   t335  00:55

3   t829  00:04

或者,您可以使用 Series.str.rsplit with 按最后一个拆分,并通过索引选择第一个列表:n=1:


test['year'] = test['year'].str.rsplit(':', n=1).str[0]

print (test)

  usr_id   year

0   t961  00:50

1   t964  03:25

2   t335  00:55

3   t829  00:04

或通过@Akira解决方案:


test['year'] = test['year'].astype(str).str[:5] 


查看完整回答
反对 回复 2022-08-11
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

由于列中当前没有实际日期,因此您需要设置默认日期。然后,您可以将格式传递给 pandas 函数。yearto_datetime

这可以在这样的单行中完成:

test['year'] = pd.to_datetime(test['year'].apply(lambda x: '1900-01-01 '+ x),format='%Y-%m-%d %H:%M:%S')


查看完整回答
反对 回复 2022-08-11
  • 2 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信