【问题标题】:time difference between datetime.timedatetime.time 之间的时间差
【发布时间】:2020-01-01 17:47:15
【问题描述】:

假设我有一个数据框:

1027   2019-01-01 07:17:00
479    2019-01-01 07:10:00
480    2019-01-01 06:10:00

我有一个变量:

x=datetime.time(8,0)

如何获得每行和x 之间的差异(以分钟为单位)?

我试过了:

row['date'].time() - x

但是得到了:

TypeError: 不支持的操作数类型 -: 'datetime.time' 和 '日期时间.时间'

【问题讨论】:

  • 这是一个错字:miniute=0 应该是 minute=0 吗?
  • 是的,你是对的,这里有一个类型,但代码中没有。
  • 请显示您的 timedelta 和减法代码,以及确切的错误消息。另外,您是否在计算之前将datetimetimestamp 转换为相同类型?
  • ive 将 df 中的行转换为: row['date'].time() 所以现在两者都是 datetime.time (hour, minute)
  • 请包含您尝试过但不起作用的代码,并包含它产生的“错误”(消息)。

标签: python pandas dataframe datetime timestamp


【解决方案1】:

time 不支持减法,请改用datetime

In [14]: x = datetime(2019, 1, 1, 8, 00, 00)

In [15]: y = datetime(2019, 1, 1, 7, 17, 00)

In [16]: x
Out[16]: datetime.datetime(2019, 1, 1, 8, 0)

In [17]: y
Out[17]: datetime.datetime(2019, 1, 1, 7, 17)

In [18]: x - y
Out[18]: datetime.timedelta(seconds=2580)

【讨论】:

  • 谢谢,但我做不到。 Y 是数据框中的日期值,所以我不能在 x 中放置任何日期,我只能将 Y 更改为 Y.time() 然后我得到 (7,17)
  • 那么将这些信息包含在您的原始问题中会很有帮助。您没有在问题中指定有关熊猫或数据框的任何内容,这意味着我认为您使用的是直接 Python。
【解决方案2】:

使用df['date'].dt.minute 将返回分钟值(整数类型),然后您可以从该值中减去您的变量。

x = 8
df['date'].dt.minute - x
0     9
1     2
2     2
Name: date, dtype: int64

我认为我上面介绍的解决方案正是您所要求的,但是,我想您可能想调查一下pandas.to_timedelta() 是否对您更有帮助。!

【讨论】:

  • edit 包含您最终建议的代码(您建议的“减法”行),以使其成为完整的答案。谢谢,欢迎来到 SO。感谢您的贡献:-)
  • 我嵌入了图像,但是您需要将代码以文本/代码格式放在 SO 上,因为图像格式的代码不容易阅读(尤其是在移动设备上),也不能复制粘贴到编辑器中。缩进 4 个空格的行将转换为“代码”格式 - 请参阅侧边栏以获取其他 MarkDown 提示。请查看Help 了解您的下一篇文章:How to PostMinimal Reproducible Examplemore
  • 谢谢,@SherylHohman。由于代码运行并显示与我的屏幕截图相同,因此我删除了我的屏幕截图。
猜你喜欢
  • 2017-09-04
  • 2022-09-22
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多