You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何读取CSV文件第一、第六行十进制数转HH.MM并统计总时长

解决CSV时间转换与总时长统计问题

别慌,我来一步步帮你理清思路并完成代码!咱们把这个任务拆成三个核心步骤,逐个击破:

步骤1:读取CSV目标行的十进制数值

首先要注意,Python里的行索引是从0开始的,所以你说的「第一行」对应索引0,「第六行」对应索引5。我们可以用标准库的csv模块来读取文件,精准提取这两行的数值:

import csv

# 定义要提取的行索引(对应实际第1、6行)
target_row_indices = [0, 5]
decimal_times = []

# 打开CSV文件读取
with open("your_data.csv", "r") as csv_file:
    reader = csv.reader(csv_file)
    for row_num, row in enumerate(reader):
        if row_num in target_row_indices:
            try:
                # 假设每行第一个元素是目标十进制数,根据你的实际情况修改索引
                time_val = float(row[0])
                decimal_times.append(time_val)
            except ValueError:
                print(f"警告:第{row_num+1}行的内容无法转换为十进制数")

步骤2:将十进制数转换为HH.MM格式

十进制数的整数部分是小时,小数部分乘以60就是分钟(注意处理四舍五入和分钟满60的情况):

def decimal_to_hhmm(decimal_time):
    # 提取整数部分作为小时
    hours = int(decimal_time)
    # 计算分钟:小数部分*60后取整
    minutes = round((decimal_time - hours) * 60)
    # 处理分钟刚好等于60的特殊情况,转成1小时0分
    if minutes == 60:
        hours += 1
        minutes = 0
    return hours, minutes

# 转换所有提取到的时间
time_pairs = [decimal_to_hhmm(t) for t in decimal_times]

步骤3:统计总时长并输出

把两个时间的小时和分钟分别累加,再处理分钟进位的问题:

# 计算总小时和总分钟
total_hours = sum(h for h, m in time_pairs)
total_minutes = sum(m for h, m in time_pairs)

# 处理分钟进位:超过60的部分转为小时
total_hours += total_minutes // 60
total_minutes = total_minutes % 60

# 输出结果,这里用HH.MM格式,也可以改成HH:MM
print(f"统计总时长:{total_hours}.{total_minutes:02d}")

可选简化方案:用Pandas快速实现

如果你熟悉Pandas,代码会更简洁:

import pandas as pd

# 读取CSV,不设置表头
df = pd.read_csv("your_data.csv", header=None)
# 提取第1、6行的第0列数据并转为浮点数
decimal_times = df.iloc[[0, 5], 0].astype(float).tolist()

# 后续的转换和统计逻辑和上面一致

注意事项

  • 如果你CSV里的目标数值不在第1列(索引0),记得把row[0]或者iloc里的列索引改成实际位置
  • 如果需要严格取整而不是四舍五入,把round()换成int()即可

内容的提问来源于stack exchange,提问作者Gary Harrison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:18:53