问题描述
( | 姓名 | Gun_time | 网络时间 | 节奏 |
---|---|---|---|---|
约翰 | 28:48:00 | 28:47:00 | 4:38:00 | |
乔治 | 29:11:00 | 29:10:00 | 4:42:00 | |
迈克 | 29:38:00 | 29:37:00 | 4:46:00 | |
莎拉 | 29:46:00 | 29:46:00 | 4:48:00 | |
罗伊 | 30:31:00 | 30:30:00 | 4:55:00 |
第一季度。如何添加另一列说明 Gun_time 和 Net_time 之间的差异? Q2。我将如何计算 Gun_time 和 Net_time 的平均值。请帮忙!
我尝试过以下操作,但不起作用
df['Difference'] = df['Gun_time'] - df['Net_time']
对于平均值,我尝试了 df['Gun_time'].mean
但它也不起作用,请帮忙!
Q.3 如果我们有 28:48(分和秒)格式而不是 28:48:00 格式的时间,函数会给出值错误怎么办。
ValueError: 预期的 hh:mm:ss 格式
解决方法
将您的列转换为 dtype timedelta,例如喜欢
for col in ("Gun_time","Net_time","Pace"):
df[col] = pd.to_timedelta(df[col])
现在您可以进行类似的计算
df['Gun_time'].mean()
# Timedelta('1 days 05:34:48')
或
df['Difference'] = df['Gun_time'] - df['Net_time']
#df['Difference']
# 0 0 days 00:01:00
# 1 0 days 00:01:00
# 2 0 days 00:01:00
# 3 0 days 00:00:00
# 4 0 days 00:01:00
# Name: Difference,dtype: timedelta64[ns]
如果你需要更好的输出到字符串,你可以使用
def timedeltaToString(td):
hours,remainder = divmod(td.total_seconds(),3600)
minutes,seconds = divmod(remainder,60)
return f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d}"
df['diffString'] = df['Difference'].apply(timedeltaToString)
# df['diffString']
# 0 00:01:00
# 1 00:01:00
# 2 00:01:00
# 3 00:00:00
# 4 00:01:00
#Name: diffString,dtype: object