如何在Pandas中处理字符串格式运动耗时数据以开展统计计算
解决方法
你之前使用的pd.to_datetime是用来转换时间点类型的接口,会默认补充年月日属性,不适用于时长维度的计算。Pandas专门提供了pd.to_timedelta接口处理时间长度类数据,可直接适配你给出的%H:%M:%S格式的耗时字符串。
核心转换代码
df_test['Elapsed time'] = pd.to_timedelta(df_test['Elapsed time'])
转换后的数据为timedelta类型,可直接用于时长类的统计计算。
常用指标计算示例
- 计算所有运动的平均耗时:
avg_time = df_test['Elapsed time'].mean()
输出会直接返回时分秒格式的平均时长,你给出的示例数据计算结果为0 days 00:28:36.666666666,如果需要去掉前缀的0 days展示,可使用str.split处理:avg_time.astype(str).split(' ')[-1]
- 转换为秒级数值做自定义计算:
如果需要计算跑步暂停时长、环比差值等自定义指标,可以先把时长转换为总秒数的数值列,方便做数值运算:
df_test['elapsed_seconds'] = df_test['Elapsed time'].dt.total_seconds()
转换后你的示例数据第一条00:22:05会转为1325的整数格式,可直接做加减乘除运算
- 计算最长和最短运动的时长差:
diff_time = df_test['Elapsed time'].max() - df_test['Elapsed time'].min()
完整测试代码
import pandas as pd # 模拟你的输入数据 data = {'Elapsed time': ['00:22:05', '00:30:34', '00:30:31', '00:37:19', '00:28:43', '00:22:08']} df_test = pd.DataFrame(data) # 转换为timedelta时长类型 df_test['Elapsed time'] = pd.to_timedelta(df_test['Elapsed time']) # 计算平均耗时 print("平均耗时:", df_test['Elapsed time'].mean()) # 输出:平均耗时: 0 days 00:28:36.666666666 # 转换为总秒数列 df_test['elapsed_seconds'] = df_test['Elapsed time'].dt.total_seconds() print(df_test)
内容的提问来源于stack exchange,提问作者kosekk_g
相关产品推荐
相关产品推荐

