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

如何将两个CSV文件横向合并为含缺失值的Pandas DataFrame?

基于Pandas合并分组内有序的两个DataFrame

问题背景

现有两个CSV文件(或Pandas DataFrame):

file1.csv

file  A
0   K0  E1
1   K0  E2
2   K0  E3
3   K1  W1
4   K2  W2

file2.csv

file  B
0   K0  E3
1   K0  W3
2   K1  E4
3   K1  W4
4   K3  W5

需要将它们合并为如下结构的结果,缺失值用NA(或空白/0)填充:

file  A   B
0   K0  E1  E3
1   K0  E2  W3
2   K0  E3  NA
3   K1  W1  E4
4   K1  NA  W4
5   K2  W2  NA
6   K3  NA  W5

实现方案

核心思路是给每个分组(file列)添加组内序号,通过序号匹配同一分组内的对应行,再做外连接保留所有数据。

步骤1:导入库并加载数据

import pandas as pd

# 加载CSV文件(如果是已有DataFrame可跳过此步)
file1 = pd.read_csv("file1.csv")
file2 = pd.read_csv("file2.csv")

# 或者构造示例DataFrame(用于测试)
# file1 = pd.DataFrame({"file": ["K0", "K0", "K0", "K1", "K2"], "A": ["E1", "E2", "E3", "W1", "W2"]})
# file2 = pd.DataFrame({"file": ["K0", "K0", "K1", "K1", "K3"], "B": ["E3", "W3", "E4", "W4", "W5"]})

步骤2:添加组内序号

对每个file分组,生成组内的行计数序号,用于匹配同组内的对应行:

file1["group_idx"] = file1.groupby("file").cumcount()
file2["group_idx"] = file2.groupby("file").cumcount()

步骤3:外连接合并

以file和group_idx为键做外连接,确保所有分组和行都被保留:

merged_df = pd.merge(file1, file2, on=["file", "group_idx"], how="outer")

步骤4:处理缺失值并整理结果

将缺失值替换为需要的内容(NA、空白或0),然后移除辅助的group_idx列并重置索引:

# 替换缺失值,可根据需求改为""(空白)或0
merged_df = merged_df.fillna("NA")

# 整理最终结果
final_result = merged_df.drop("group_idx", axis=1).reset_index(drop=True)

输出结果

执行print(final_result)即可得到目标格式的DataFrame,也可以用final_result.to_csv("result.csv", index=False)保存为CSV文件。

内容的提问来源于stack exchange,提问作者Milan Jain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 07:16:28