处理跑步比赛成绩数据集时,其时间形式为;2:12:12(2时12分12秒),如下表所示。使用datetime的datetime()和timedelta()方法或pandas的to_timedelta()方法均无法将DataFrame对象转换为datetime或timedelta类型,这样就无法进行后续可视化操作,望平台各位指点一二~
10K | Official Time |
---|---|
0:30:35 | 2:12:12 |
0:30:34 | 2:12:14 |
import numpy as np
import pandas as pd
import datetime
from datetime import datetime as date
# 导入csv文件
df=pd.read_csv('...')
错误一:
# 将时间列转换为时间序列
df['10K'] = df['10K'].apply(lambda x: pd.to_timedelta(x))
错误二:
# 5~6行为需读取数据
df.iloc[:,5:6] = df.iloc[:, 5:6].apply(pd.to_timedelta)
两者均报错如下:
ValueError: symbols w/o a number
错误三:
# 5~6行为需读取数据
df.iloc[:,5:6] = datetime.timedelta(df.iloc[:,5:6])
报错如下:
TypeError: unsupported type for timedelta days component: DataFrame
在网上搜索教程和解决方法时,看到datetime方法必须有年月日参数,可以没有时分秒,且大多数侧重于对日期(年/月/日)进行转换,较少有单独提到时间(时/分/秒)的转换的,还望各位指教~
strftime有试过吗?
不知道你这个问题是否已经解决, 如果还没有解决的话:from datetime import *
import numpy as np
d = date(2020,1,9)
display(d)
d1 = date(2020,2,8)
display(d1)
y = d.__rsub__(d1)
display(y)
display(y.days)
diff_month = y.days / 30
display(diff_month)
floor_diff_month = np.floor(diff_month)
display(floor_diff_month)
结果如下: