Python 无法将此列的数据时间(对象转换为时间)
我有一个数据框,数据类型如下Python 无法将此列的数据时间(对象转换为时间),python,pandas,dataframe,datetime,python-datetime,Python,Pandas,Dataframe,Datetime,Python Datetime,我有一个数据框,数据类型如下 usr_id year 0 t961 00:50:03.158000 1 t964 03:25:57 2 t335 00:55:00 3 t829 00:04:25.714000 usr_id object year object dtype: object 我想将year列数据类型转换为datetime。我使用了下面的代码 timefmt = "%H:%M" test['year'] = pd
usr_id year
0 t961 00:50:03.158000
1 t964 03:25:57
2 t335 00:55:00
3 t829 00:04:25.714000
usr_id object
year object
dtype: object
我想将year列数据类型转换为datetime。我使用了下面的代码
timefmt = "%H:%M"
test['year'] = pd.to_datetime(
test['year'], format=timefmt, errors='coerce').dt.time
我的产量不足
usr_id year
0 t961 NaT
1 t964 NaT
2 t335 NaT
3 t829 NaT
如何将此列的数据时间(对象)转换为日期时间?
如何降低秒数和微秒数
预期产量
由于
年份
列中当前没有实际日期,因此需要设置默认日期。然后可以将格式传递给pandasto_datetime
函数
这可以在一个衬里中完成,如下所示:
test['year'] = pd.to_datetime(test['year'].apply(lambda x: '1900-01-01 '+ x),format='%Y-%m-%d %H:%M:%S')
用于:
或者您可以使用withn=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]
test['year']=test['year'].astype(str).str[0:5]
也会得到相同的输出
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
test['year'] = test['year'].astype(str).str[:5]