如何为Pandas生成的参数CSV添加对应有效循环时间的时间列?
解决方案
要给CSV添加仅包含成功运行时间的time列,你需要在每次成功调用vad_plotter后,将当前时间(loop_time)作为字段加入参数数据,再存入DataFrame。具体修改如下:
修改后的核心代码
def main(): # ... 保留原有的argparse和初始化代码 ... np.seterr(all='ignore') start_time = args.start_time end_time = args.end_time loop_time = start_time minute = timedelta(minutes=1) tmp = pd.DataFrame() while loop_time <= end_time: try: vad_plotter(args.radar_id, storm_motion=args.storm_motion, sfc_wind=args.sfc_wind, time=loop_time, fname=args.img_name, local_path=args.local_path, cache_path=args.cache_path, web=args.web, fixed=args.fixed ) # 提取时间的HHMM部分(若需完整时间直接用loop_time即可) time_label = loop_time.split('/')[1] # 将time字段加入参数数据 params_with_time = params.copy() params_with_time['time'] = time_label # 添加到临时DataFrame(若使用pandas 2.0+,推荐用pd.concat替代append) tmp = tmp.append(params_with_time.to_frame().T, ignore_index=True) # 新版本pandas推荐写法: # tmp = pd.concat([tmp, params_with_time.to_frame().T], ignore_index=True) except: if args.web: print(json.dumps({'error':'error'})) else: print('This time does not exist. Continuing to next time.') loop_time_dt = datetime.strptime(loop_time, '%Y-%m-%d/%H%M') loop_time_dt += minute loop_time = datetime.strftime(loop_time_dt, '%Y-%m-%d/%H%M') # 保存CSV时去掉默认索引 tmp.to_csv('parameters.csv', index=False)
关键说明
- 仅保留成功时间:只有在
try块成功执行(即该时间点有数据并完成绘图)时,才会将时间和参数写入tmp,异常时间点会被跳过,自然不会出现在最终CSV中。 - 时间格式处理:通过
loop_time.split('/')[1]从YYYY-MM-DD/HHMM格式中提取出HHMM(如2100),符合你想要的示例格式;如果需要完整时间字符串,直接替换为time_label = loop_time即可。 - 索引处理:使用
ignore_index=True避免因索引重复导致的混乱,最后保存CSV时添加index=False,去掉默认的数字索引列。
内容的提问来源于stack exchange,提问作者user11194076
相关产品推荐
相关产品推荐

