如何将 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
假设我有一个跟踪 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