【问题标题】:How to subtract two time columns with timedelta (python)?如何用timedelta(python)减去两个时间列?
【发布时间】:2016-12-12 18:46:25
【问题描述】:

我尝试了几个小时在这两个时间列之间做减法,这样我就可以看到另一个动作发生需要多长时间:

In[1]:aumento_data_separada 
Out[1]: Response_Time      Request_Time(when the client do a request)   
 0   00:56:58.612000    00:46:34.347000
 1   12:00:41.069000    12:00:32.603000
 2   18:05:02.776000    16:39:42.682000
 3   19:27:11.997000    17:33:05.589000 
...

这个数据框有更多的 392560 行,如上所示。我想在所有这些中进行操作。并用结果创建一个新列。 我尝试从 timedelta 阅读文档,但我根本不明白。 我这样做了 -> type(aumento_data_separada['Response_Time'].iloc[0])type(aumento_data_separada['Request_Time'].iloc[0]) 来查看类型,它返回给我一个 datetime.time。我发现由于类型的原因,我无法在其中进行操作。所以我尝试分别转换它们:pd.to_datetime(aumento_data_separada['Request_Time']) 但它返回了以下错误-> object of type 'datetime.time' has no len()

这是第一条错误消息和我尝试过的代码 -> aumento_data_separada.Response_Time - aumento_data_separada.Request_Time - 返回unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

【问题讨论】:

  • 你能展示一下你的尝试吗?
  • 我尝试了一些我确信完全错误的事情。 dif =aumento_data_separada[ 'Response_Time'] - datetime.timedelta(1) delta = dif - aumento_data_separada[ 'Request_Time'] a = datetime.timedelta(aumento_data_separada['response_at'])
  • Sabrina,您的问题应该包括您的代码尝试,以便尝试回答它的人有一些需要解决的问题。目前,您的问题看起来像是试图从社区获得免费咨询服务。 Edit your question,在MCVE 中向我们展示您迄今为止的工作,您所期望的结果和您得到的结果,我们将帮助您找出问题所在。
  • 谢谢戈蒂!我是新来的编程新手哈哈,所以我仍然习惯了事情的工作方式,你对我的问题的反馈非常重要,所以我不会再犯同样的错误了!我编辑了它,希望它更好:)

标签: python pandas python-datetime


【解决方案1】:

将列转换为pd.Timedeltapd.to_timedelta

df = df.apply(pd.to_timedelta)

df.Response_Time - df.Request_Time

0   00:10:24.265000
1   00:00:08.466000
2   01:25:20.094000
3   01:54:06.408000
dtype: timedelta64[ns]

【讨论】:

  • 我试过了,但它给了我以下错误:("Invalid type for timedelta scalar: <type 'datetime.time'>", u'occurred at index Response_Time')
【解决方案2】:

这类似于 piRSquared 的答案,但由于某种原因,当我并排测试这两种方法时,这会更快。不知道为什么会这样。

df['Time_Diff'] = pd.to_datetime(df.Response_Time) - pd.to_datetime(df.Request_Time)

【讨论】:

  • 我收到了这个错误 -> object of type 'datetime.time' has no len()
猜你喜欢
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 2017-09-29
  • 1970-01-01
相关资源
最近更新 更多