(Python)如何将跑步比赛成绩转换为时间序列,以便于进行数据可视化?

(Python)如何将跑步比赛成绩转换为时间序列,以便于进行数据可视化?

处理跑步比赛成绩数据集时,其时间形式为;2:12:12(2时12分12秒),如下表所示。使用datetime的datetime()和timedelta()方法或pandas的to_timedelta()方法均无法将DataFrame对象转换为datetime或timedelta类型,这样就无法进行后续可视化操作,望平台各位指点一二~

10KOfficial Time
0:30:352:12:12
0:30:342: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有试过吗?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7670497
  • 除此之外, 这篇博客: python中的时间处理模块(二):datetime模块之timedelta类详解中的 2)计算两个日期相隔多少月 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    • 实际中,计算两个日期之间的月份,有如下两个思路:Ⅰ自然数的差,直接用月份相减,这种方式最简单粗暴;Ⅱ天数的差,月份 = 天数差 ➗ 30,最后在取整;
    • 第一种方式很简单,我这里就不细说。下面注意讲述第二种方式的代码实现;
    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)
    

    结果如下:
    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^