如何计算timedelta列的平均值?

问题描述 投票:0回答:2

我想从结果中删除“0 天”,同时能够使用格式化结果执行计算

0 0 天 00:27:00 1 0 天 01:22:00 2 0 天 00:52:00 3 0 天 01:04:00 4 0 天 00:07:00 名称:节奏格式,数据类型:timedelta64[ns]

这就是我所期望的结果:

00:27:00 01:22:00 00:52:00 01:04:00 00:07:00

并能够计算平均值,在本例中为 00:46

python python-3.x pandas formatting timedelta
2个回答
0
投票

要计算 timedelta 列的平均值,同时格式化结果以排除“0 天”部分,您可以按照以下步骤操作:

将 timedelta 值转换为秒。这简化了平均值的计算。 计算这些秒的平均值。 将平均值转换回时间增量,然后将其格式化为仅显示时间部分。 这是使用 Pandas 实现此目的的 Python 代码片段:

import pandas as pd

# Assuming you have a DataFrame 'df' with a timedelta column named 'Tempo Formatado'
# Example DataFrame creation:
data = {'Tempo Formatado': pd.to_timedelta(['0 days 00:27:00', '0 days 01:22:00', 
                                           '0 days 00:52:00', '0 days 01:04:00', 
                                           '0 days 00:07:00'])}
df = pd.DataFrame(data)

# Convert the timedelta to seconds
df['seconds'] = df['Tempo Formatado'].dt.total_seconds()

# Calculate the average in seconds
average_seconds = df['seconds'].mean()

# Convert the average back to timedelta
average_timedelta = pd.to_timedelta(average_seconds, unit='s')

# Format the result to exclude 'days'
average_formatted = str(average_timedelta).split('days ')[-1].strip()

print("Average time:", average_formatted)

0
投票

如果没有数据样本,就很难提供帮助,但我们假设您的列名为“时间”。然后:

df['numeric_time'] = df['time'].values.astype(np.int64)
pd.to_timedelta(df['numeric_time'].mean())
© www.soinside.com 2019 - 2024. All rights reserved.