【问题标题】:Calculate time difference within Pandas while adding a new column在添加新列时计算 Pandas 中的时间差
【发布时间】:2020-05-07 01:06:35
【问题描述】:

我有一个包含开始时间和结束时间的数据框。我想计算每行的时间差(以秒为单位),同时为这个新计算添加一个新列。

     dataframe = df


    starttime                  endtime                     ID

    1/7/2020 2:32:15 PM        1/7/2020 2:32:16 PM          A
    1/8/2020 2:33:20 PM        1/8/2020 2:33:22 PM          B

我想要这样的结果:

    starttime                  endtime                      ID      Diff

    1/7/2020 2:32:15 PM        1/7/2020 2:32:16 PM          A       1 sec
    1/8/2020 2:33:20 PM        1/8/2020 2:33:22 PM          B       2 sec

目前我有这个命令:

    import numpy as np
    import pandas as pd
    import datetime
    from dateutil.relativedelta import relativedelta
    from datetime import date


     df['Diff'] = df['endtime'] - df['starttime']
     df['Diff']=df['Diff']/np.timedelta64(1,'s')

     print(df)

【问题讨论】:

  • 我无法产生以秒为单位的时差
  • 发生了什么?
  • 我不断收到类型错误。提供的代码解决了我的困境

标签: python pandas numpy time


【解决方案1】:

您可以执行以下操作。你会在几秒钟内得到差异(虽然你不会得到文本'sec')

df['Diff'] = (pd.to_datetime(df.endtime) - pd.to_datetime(df.starttime)).dt.total_seconds()

输出

            starttime   endtime            ID   Diff
0   1/7/2020 14:32:15   1/7/2020 14:32:16   A   1.0
1   1/8/2020 14:33:20   1/8/2020 14:33:22   B   2.0

【讨论】:

  • 好的,所以我在此之后添加您的命令:df['Diff'] = df['endtime'] - df['starttime'] df['Diff']=df['Diff' ]/np.timedelta64(1,'s')
  • 您不需要任何前面的行。你可以直接使用我放的代码。
  • 我现在试试。谢谢
【解决方案2】:

你来了

df['mydiff'] = pd.to_datetime(df.starttime) - pd.to_datetime(df.endtime)

【讨论】:

  • 这不是要创建一列timedelta 对象吗?不是以秒为单位的时差?还是我误会了?
猜你喜欢
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 2014-05-20
  • 2018-01-05
相关资源
最近更新 更多