gpt4 book ai didi

python Pandas : TypeError: unsupported operand type(s) for +: 'datetime.time' and 'Timedelta'

转载 作者:太空狗 更新时间:2023-10-30 02:39:45 24 4
gpt4 key购买 nike

我正在尝试在 pandas 的数据框中添加两个系列,第一个系列是从 excel 文件导出的 24 小时时间值(例如 17:30),第二个系列是 Timedelta 中相同长度的系列使用“pd.Timedelta”命令从 float 转换而来的格式。

无论日期如何变化,所需的第三列结果都是 24 小时制(例如 22:00 + 4 小时 = 02:00)。

我这样创建了 Delta 系列:

delta = pd.Series(0 for x in range(0, len(df.Time_In_Hours)))

for j in range(0, len(df.Time_In_Hours)):
delta[j] = pd.Timedelta(df.Time_In_Hours[j], 'h')
df = df.assign(Delta = delta)
print ("Delta dtype = %s" % (df.Delta.dtype))
print ("Start_Time dtype = %s" % (df.Start_Time.dtype))

#Output
Delta dtype = object
Start_Time dtype = object

我的目标是:

df["end_Time"] = df["Start_Time"] + df["Delta"]  

我收到的错误是:TypeError:+ 不支持的操作数类型:“datetime.time”和“Timedelta”

似乎这个 datetime.time 格式是不可变的。我错过了什么吗?

最佳答案

原因

错误很明显。如果您检查元素的类型,您会发现在某些时候您需要添加 datetime.time 对象和 pandas.Timedelta

有两种日期、时间和时间增量:

  • Python 的 datetime 模块内置函数,即 datetime.timedatetime.datedatetime.timedelta、. ..
  • pandas/numpy 即 pandas.Timestamppandas.Timedelta

这两个堆栈对于加法或比较等基本操作不兼容。

解决方案一

全部转成pandas类型,最后提取时间

您应该确保列的 dtypes 类似于 datetime64[ns]timedelta64[ns]。为此,请尝试使用 pd.to_datetimepd.to_timedelta 显式转换它们。

解决方案2

另一种方法是将 Delta 列转换为 datetime.timedelta 你可以试试

df["end_Time"] = df["Start_Time"] + df["Delta"].map(pd.Timedelta.to_pytimedelta)

但是您可能会遇到更多错误,具体取决于您的 df["Delta"]df["Start_Time"]

关于 python Pandas : TypeError: unsupported operand type(s) for +: 'datetime.time' and 'Timedelta' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43506680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com