【问题标题】:Time calculations, mean , median, mode时间计算,平均值,中位数,众数
【发布时间】:2021-05-12 16:05:21
【问题描述】:
( Name Gun_time Net_time Pace
John 28:48:00 28:47:00 4:38:00
George 29:11:00 29:10:00 4:42:00
Mike 29:38:00 29:37:00 4:46:00
Sarah 29:46:00 29:46:00 4:48:00
Roy 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 格式

【问题讨论】:

  • 请将代码示例添加为文本/格式化代码块,而不是图像。
  • Fuppes 先生现在请看一下,我希望它有点清楚。
  • 实际上,我指的是您的输入数据(目前仍是屏幕截图)。我们不能轻易地从图像中复制数据进行测试,这就是原因。无论如何,从它的外观来看,我会说你需要转换为timedelta,例如pd.to_timedelta(df['Gun_time']) - pd.to_timedelta(df['Net_time']).
  • Fuppes 先生,现在请看一下,可能对您有帮助。谢谢
  • 好的,我认为只有当整个专栏都采用这种格式时才会发生这种情况。一个简单的解决方案可能是在前面添加一个字符串 '00:',参见例如stackoverflow.com/questions/20025882/…

标签: python datetime mean median mode


【解决方案1】:

将您的列转换为 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

另见Format timedelta to string

【讨论】:

  • 谢谢,这很有帮助,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2019-03-07
  • 2016-10-04
  • 2011-05-10
  • 2013-11-05
  • 1970-01-01
  • 2010-12-28
  • 2020-06-10
  • 1970-01-01
相关资源
最近更新 更多