如何用Pandas合并两个不同长度的txt文件,缺省补0保留长表全部行
实现代码
你出现行数只有8000的核心原因是默认用了内连接,只会保留两个表共有的匹配行,换成左连接并做空值填充即可实现需求:
步骤1:正确读取无表头数据集
import pandas as pd # 定义8个列名,第一列col_1为时间戳连接键 col_list = [f"col_{i}" for i in range(1, 9)] # 读取时指定无表头,避免把第一行数据误识别为列名 df_a = pd.read_csv("path_a.txt", header=None, names=col_list) df_b = pd.read_csv("path_b.txt", header=None, names=col_list) # 可选操作:统一时间戳列的数据类型,避免int/str类型不一致导致匹配失效 df_a["col_1"] = df_a["col_1"].astype(int) df_b["col_1"] = df_b["col_1"].astype(int)
步骤2:左连接合并+空值填0
# 以df_a为左表做左连接,完整保留df_a的50000行,重名列加_b后缀区分df_b字段 merged_df = pd.merge( left=df_a, right=df_b, on="col_1", how="left", suffixes=("", "_b") ) # 所有df_b未匹配到的空值统一填充为0 merged_df = merged_df.fillna(0) # 验证输出形状,预期为(50000, 15) print(merged_df.shape)
步骤3(可选):导出结果
如果需要输出和输入格式一致的无表头txt文件,执行以下代码:
merged_df.to_csv("merged_output.txt", header=False, index=False)
内容的提问来源于stack exchange,提问作者OK 400
相关产品推荐
相关产品推荐

