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

如何修改代码使输出数据仅保留小时级时间格式?

解决方法:将时间截断到小时级

你需要把时间的分钟、秒、微秒部分置为0,或者直接格式化输出为固定小时格式,以下是两种可行方案:

方案1:保留datetime类型(截断到小时)

直接对解析后的datetime对象做截断处理,重置分钟、秒、微秒为0,这样存储到DataFrame的是标准小时级时间对象,输出到CSV后Excel会识别为小时级时间:

import json
import os
from datetime import datetime
import pandas as pd

PPT_id = 'S116'

datetime_lst = []
temp_lst = []

filepath_lst = os.listdir('./input/')
for filepath in filepath_lst:
    with open('./input/' + filepath,'r') as f:  # 用with语句自动管理文件关闭,更安全
        data = json.load(f)

    for item in data['items']:
        dtime = datetime.strptime(item['timestamp'], '%Y-%m-%dT%H:%M:%S%z')
        readings = item['readings']
        for read in readings:
            if read['station_id'] == PPT_id:
                # 截断到小时:重置分钟、秒、微秒为0
                dtime_hourly = dtime.replace(minute=0, second=0, microsecond=0)
                datetime_lst.append(dtime_hourly)
                temp_lst.append(read['value'])
            
out = pd.DataFrame({'Datetime': datetime_lst, 'Temperature': temp_lst})
out.to_csv('temperature.csv', index=False)

方案2:直接输出小时级字符串

如果不需要datetime类型,直接把时间格式化为%d/%m/%Y %H:00的字符串,CSV里的时间会直接显示为固定小时格式:

import json
import os
from datetime import datetime
import pandas as pd

PPT_id = 'S116'

datetime_lst = []
temp_lst = []

filepath_lst = os.listdir('./input/')
for filepath in filepath_lst:
    with open('./input/' + filepath,'r') as f:
        data = json.load(f)

    for item in data['items']:
        dtime = datetime.strptime(item['timestamp'], '%Y-%m-%dT%H:%M:%S%z')
        readings = item['readings']
        for read in readings:
            if read['station_id'] == PPT_id:
                # 直接格式化为小时级字符串
                dtime_str = dtime.strftime('%d/%m/%Y %H:00')
                datetime_lst.append(dtime_str)
                temp_lst.append(read['value'])
            
out = pd.DataFrame({'Datetime': datetime_lst, 'Temperature': temp_lst})
out.to_csv('temperature.csv', index=False)

原代码问题说明

你之前的代码把时间转成%H%M(比如0002)再转回datetime,实际上还是保留了分钟数(02),所以输出会显示分钟。上述两种方法都能彻底移除分钟部分,只保留小时级时间。

内容的提问来源于stack exchange,提问作者jun long

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:25:22