如何在pandas DataFrame中修改时间格式并将秒数统一设置为59
批量处理TXT时间列格式方案
需求确认
你需要将TXT文件Time列中HH:MM:00格式的时间,修改为HHMM59格式,固定秒位替换为59,以下提供两种常用实现方案:
方案1:Python 全平台批量处理(适配任意分隔符、多文件)
你可以直接运行以下脚本,按你的实际文件情况修改开头的配置项即可:
import os import glob # -------------------------- 按需修改以下配置 -------------------------- # TXT文件所在的文件夹路径 folder_path = "./your_txt_folder" # TXT文件的列分隔符,制表符填"\t",逗号填",",空格填" " delimiter = "\t" # Time列的序号,第一列是0,第二列是1,依此类推 time_col_index = 1 # 处理后的文件添加的后缀,避免覆盖原文件,不需要可以留空 output_suffix = "_processed" # -------------------------------------------------------------------- # 遍历文件夹下所有txt文件 for txt_file in glob.glob(os.path.join(folder_path, "*.txt")): lines = [] with open(txt_file, "r", encoding="utf-8") as f: for line in f: line = line.strip() if not line: lines.append(line) continue cols = line.split(delimiter) # 处理Time列:去除冒号,替换最后两位00为59 time_str = cols[time_col_index] processed_time = time_str.replace(":", "")[:4] + "59" cols[time_col_index] = processed_time lines.append(delimiter.join(cols)) # 保存处理后的文件 file_name, ext = os.path.splitext(txt_file) output_path = f"{file_name}{output_suffix}{ext}" with open(output_path, "w", encoding="utf-8") as f: f.write("\n".join(lines))
方案2:AWK 单行命令(类Unix/Linux/macOS 快速处理)
如果你的TXT是制表符分隔、Time列为第2列,直接在终端执行以下命令即可批量处理:
# 单个文件处理,输出到新文件 awk -F '\t' 'BEGIN{OFS="\t"} {gsub(/:/,"",$2); $2=substr($2,1,4)"59"; print}' input.txt > output.txt # 批量处理当前目录所有txt文件,保存为原文件名加_processed后缀 for f in *.txt; do awk -F '\t' 'BEGIN{OFS="\t"} {gsub(/:/,"",$2); $2=substr($2,1,4)"59"; print}' "$f" > "${f%.txt}_processed.txt"; done
提示:如果列分隔符是逗号,把
-F '\t'里的\t换成,即可;如果Time列是第3列,把代码里的$2改成$3即可。
内容的提问来源于stack exchange,提问作者Silverback W
相关产品推荐
相关产品推荐

