无法转换此列的数据时间(对象到时间)
Unable convert the data time of this column (object to time)
我有一个如下所示的数据框数据类型
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
我想将年列数据类型转换为日期时间。我使用了下面的代码。
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
如何转换此列(对象为日期时间)的数据时间?
我怎样才能减少秒和微秒?
Expected output
usr_id year
0 t961 00:50
1 t964 03:25
2 t335 00:55
3 t829 00:04
由于您的 year
列中目前没有实际日期,您需要设置一个默认日期。然后你可以将格式传递给 pandas to_datetime
函数。
这可以像这样在一行中完成:
test['year'] = pd.to_datetime(test['year'].apply(lambda x: '1900-01-01 '+ x),format='%Y-%m-%d %H:%M:%S')
使用to_datetime
with 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
与 n=1
一起使用,通过索引将最后 :
和 select 第一个列表拆分:
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]
我有一个如下所示的数据框数据类型
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
我想将年列数据类型转换为日期时间。我使用了下面的代码。
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
如何转换此列(对象为日期时间)的数据时间? 我怎样才能减少秒和微秒?
Expected output
usr_id year
0 t961 00:50
1 t964 03:25
2 t335 00:55
3 t829 00:04
由于您的 year
列中目前没有实际日期,您需要设置一个默认日期。然后你可以将格式传递给 pandas to_datetime
函数。
这可以像这样在一行中完成:
test['year'] = pd.to_datetime(test['year'].apply(lambda x: '1900-01-01 '+ x),format='%Y-%m-%d %H:%M:%S')
使用to_datetime
with 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
与 n=1
一起使用,通过索引将最后 :
和 select 第一个列表拆分:
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]