如何将 DataFrame 中的一列浮点数除以一列 datetime.time 值?

How to divide a column of floats by a column of datetime.time values in a DataFrame?

假设我有一个跟踪 TimeWorked 的数据框,它是 Hours/Min/Sec 中的类型 datetime.time 和每人浮动类型的 TimeOff 以秒为单位:

 Name    TimeWorked    TimeOff
  Bob      00:55:44       20.4
 Jane      01:21:10        5.0
 Mike      00:10:14           

TimeOff 可以为空。我如何划分这两列 TimeOff/TimeWorked 以得到一个名为“%Off”的新列,它是一个跟踪 Off/Worked 之间比率的浮点数?如果没有休息时间,“%Off”列也应为空白,导致:

 Name    TimeWorked    TimeOff   %Off
  Bob      00:55:44       20.4   whatever (20.4 seconds/00:55:44) is as a float
 Jane      01:21:10        5.0   whatever (5.0 seconds/01:21:10) is as a float
 Mike      00:10:14    

df['%Off'] = df['TimeOff'] / df['TimeWorked']

当前 returns / 不支持操作数类型:'float' 和 'datetime.time'

不太确定如何提供完全可运行的示例,因为我不能强制示例的类型为 'datetime.time'。我收到的数据已经是这样了。这是我尝试做的示例:

import pandas as pd
data = [['00:55:44', 20.4]]
df = pd.DataFrame(data, columns ['TimeWorked', 'TimeOff'])
new_dtypes = {'TimeWorked': 'datetime.time', 'TimeOff': 'float'}
df = df.astype(new_dtypes)

运行 表示 'datetime.time' 不理解。

试试 timedelta:

df['Off_pct'] = (pd.to_timedelta(df['TimeOff'], unit='s')/
                 pd.to_timedelta(df['TimeWorked'].astype(str))
                )

输出:

   Name TimeWorked  TimeOff   Off_pct
0   Bob   00:55:44     20.4  0.006100
1  Jane   01:21:10      5.0  0.001027
2  Mike   00:10:14      NaN       NaN