使用Pandas DataFrame提取待转换数据量的极值及均值并关联时间指标
解决方案
首先需要将所有时间列转换为timedelta类型,才能正确进行时间运算。随后提取数据量最小、最大对应的行数据,计算时间列的平均值,最后构造目标统计表格。
完整代码实现
import pandas as pd # 转换时间列为timedelta类型,支持时间运算 time_cols = ['转换时间(convesion time)', '处理完成时间(process completed)', '耗时(time taken)'] df[time_cols] = df[time_cols].apply(pd.to_timedelta) # 计算待转换数据量的关键统计值 data_min = df['待转换数据量(data to convert)'].min() data_max = df['待转换数据量(data to convert)'].max() data_avg = df['待转换数据量(data to convert)'].mean() # 获取最小值、最大值对应的行数据 min_row = df[df['待转换数据量(data to convert)'] == data_min].iloc[0] max_row = df[df['待转换数据量(data to convert)'] == data_max].iloc[0] # 计算时间列的平均值 avg_times = df[time_cols].mean() # 计算转换+处理的总时长 min_total = min_row['转换时间(convesion time)'] + min_row['处理完成时间(process completed)'] max_total = max_row['转换时间(convesion time)'] + max_row['处理完成时间(process completed)'] avg_total = avg_times['转换时间(convesion time)'] + avg_times['处理完成时间(process completed)'] # 构造结果数据集 result_data = [ ['MIN', data_min, min_row['转换时间(convesion time)'], min_row['处理完成时间(process completed)'], min_total, min_row['耗时(time taken)']], ['MAX', data_max, max_row['转换时间(convesion time)'], max_row['处理完成时间(process completed)'], max_total, max_row['耗时(time taken)']], ['AVG', data_avg, avg_times['转换时间(convesion time)'], avg_times['处理完成时间(process completed)'], avg_total, avg_times['耗时(time taken)']] ] result_df = pd.DataFrame(result_data, columns=[ '统计类型(d)', '待转换数据量(Data to convert)', '转换时间(Conversion time)', '处理完成时间(Process completed)', '总时长(转换+处理)(total time(process+conversion))', '耗时(Time taken)' ]) # 格式化时间列为HH:MM:SS显示格式 time_display_cols = ['转换时间(Conversion time)', '处理完成时间(Process completed)', '总时长(转换+处理)(total time(process+conversion))', '耗时(Time taken)'] result_df[time_display_cols] = result_df[time_display_cols].apply( lambda x: x.dt.total_seconds().apply(lambda s: f"{int(s//3600):02d}:{int((s%3600)//60):02d}:{int(s%60):02d}") ) # 统一数据量为整数格式 result_df['待转换数据量(Data to convert)'] = result_df['待转换数据量(Data to convert)'].astype(int) # 输出Markdown格式表格 print(result_df.to_markdown(index=False))
输出结果
| 统计类型(d) | 待转换数据量(Data to convert) | 转换时间(Conversion time) | 处理完成时间(Process completed) | 总时长(转换+处理)(total time(process+conversion)) | 耗时(Time taken) |
|---|---|---|---|---|---|
| MIN | 1000 | 00:00:30 | 00:00:28 | 00:00:58 | 00:00:31 |
| MAX | 50000 | 00:01:30 | 00:03:28 | 00:04:58 | 00:06:31 |
| AVG | 25500 | 00:01:00 | 00:01:58 | 00:02:58 | 00:03:31 |
内容的提问来源于stack exchange,提问作者ditil
相关产品推荐
相关产品推荐

