我有一个如下数据框数据类型 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]
白猪掌柜的
TA贡献1893条经验 获得超10个赞
由于列中当前没有实际日期,因此您需要设置默认日期。然后,您可以将格式传递给 pandas 函数。year
to_datetime
这可以在这样的单行中完成:
test['year'] = pd.to_datetime(test['year'].apply(lambda x: '1900-01-01 '+ x),format='%Y-%m-%d %H:%M:%S')
添加回答
举报
0/150
提交
取消