基于file1.txt时间戳补零对齐file2.txt温度数据长度的技术实现问题
基于file1时间戳补全file2数据的Python实现
需求说明
我有两个文本文件file1.txt和file2.txt,第一列是Julian day格式的时间戳,第二列是温度数据。需要以file1.txt的时间戳为基准,给file2.txt补零,让它的长度和file1.txt一致。
输入数据
file1.txt内容:
023 4.5 024 6.8 025 9.8 030 2.3 125 1.4 129 5.8 168 1.0
file2.txt内容:
024 1.2 025 2.3 125 1.6
期望输出
023 0.0 024 1.2 025 2.3 030 0.0 125 1.6 129 0.0 168 0.0
解决方案代码
基于Pandas的合并填充功能可以快速实现需求,代码如下:
import pandas as pd # 读取文件,指定列名并保留时间戳的字符串格式(避免023变成23) df1 = pd.read_csv("file1.txt", sep=" ", header=None, names=["time_stamp", "temp"], dtype={"time_stamp": str}) df2 = pd.read_csv("file2.txt", sep=" ", header=None, names=["time_stamp", "temp"], dtype={"time_stamp": str}) # 以df1的时间戳为基准左连接df2,缺失数据用0.0填充 merged_df = df1[["time_stamp"]].merge(df2, on="time_stamp", how="left").fillna(0.0) # 按要求格式输出结果 for _, row in merged_df.iterrows(): print(f"{row['time_stamp']} {row['temp']:.1f}") # 如需保存到文件,可执行下面一行 # merged_df.to_csv("output.txt", sep=" ", header=False, index=False, float_format="%.1f")
关键说明
- 读取文件时指定
dtype={"time_stamp": str},确保三位格式的时间戳不被转为数字丢失前缀零 - 使用
how="left"的合并方式,保证完全保留file1.txt的所有时间戳 fillna(0.0)直接将匹配不到的温度数据补为0.0,最后通过格式化字符串输出符合要求的格式
内容的提问来源于stack exchange,提问作者wei
相关产品推荐
相关产品推荐

