代码之家  ›  专栏  ›  技术社区  ›  alejandrohtadinom

熊猫时间操作

  •  0
  • alejandrohtadinom  · 技术社区  · 7 年前

    我有一个数据框,里面有一个经纪人提供的信息,数据显示了旅行的距离、花费的时间和比赛的日期。

    DISTANCE    TIME    DATE
    9.8     51:50.92    09/08/18
    11.1    55:59.70    24/08/18
    11.1    49:25.20    29/08/18
    

    算术 中记录之间的操作

    问题如下:

    日期时间 它保持以下格式:

    1900-01-01 00:51:50
    1900-01-01 00:55:59
    1900-01-01 00:49:25
    

    我需要的是时间,所以我做以下

    df['TIME'] = pd.to_datetime(df['TIME'], format = '%M:%S')
    

    这就引出了下一个问题,这个列现在是“object”类型,我不能对它执行任何类型的操作。

    时间 不丢失日期时间格式?用它做手术。

    例如,我想计算速度,时间和频率的差异。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Ines    7 年前

    假设这段距离是公里,用它来计算你的速度,单位是公里/小时:

    import pandas as pd
    
    df=pd.DataFrame({'DISTANCE':[9.5,11.1,11.1],'TIME':['51:50.92','55:59.70','49:25.20'],'DATE':['09/08/18','24/08/18','29/08/18']})
    
    
    df['TIME'] = '00:' + df['TIME']
    df['TIME'] = pd.to_timedelta(df['TIME'])
    df['SPEED (km/h)']=[df['DISTANCE'][i]/(df['TIME'][i].total_seconds()/3600) for i in df.index]#total_seconds() won't work with a pandas column so you need to apply it to each TIME cell
    
        2
  •  2
  •   cpander    7 年前

    而不是 to_datetime ,你可以使用 to_timedelta

    df['TIME'] = '00:' + df['TIME']
    df['TIME'] = pd.to_timedelta(df['TIME'])
    

    其结果是:

       DISTANCE            TIME      DATE
    0       9.8 00:51:50.920000  09/08/18
    1      11.1 00:55:59.700000  24/08/18
    2      11.1 00:49:25.200000  29/08/18
    

    现在可以对 TIME . 然而,正如Phung Duy Phong在上面的评论中提到的,如果没有看到您想要运行的代码,很难说这是否能解决您的问题。