Python中如何合并多个只填写了一部分的表格?

有个问题请教一下, 我现在有多个表 dataframe, 表的行数和格式是完全一样的, 只是每个同事填写其中的一部分不修改其中的格式, 现在我想把填好的所有的表合并, 把之前的空值替换成同事填好的怎么做 ?

我看 pandas 里面的函数 merge 是不行的, 不知道这个应该怎么做。


Python中如何合并多个只填写了一部分的表格?
4 回复

核心思路:用pandasconcat配合merge,按需选择列合并。

直接上代码,假设你有两个结构类似但列不完全相同的DataFrame

import pandas as pd

# 示例数据:df1有A、B列,df2有A、C列,通过'A'列关联
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': ['x', 'y', 'z']})
df2 = pd.DataFrame({'A': [2, 3, 4], 'C': [100, 200, 300]})

# 方法1:外连接合并,保留所有行和列,缺失值填NaN
merged_outer = pd.merge(df1, df2, on='A', how='outer')
print("外连接结果:")
print(merged_outer)

# 方法2:如果你有多个表,先统一列再纵向拼接
df3 = pd.DataFrame({'A': [4, 5], 'B': ['p', 'q'], 'C': [400, 500]})

# 确保所有表列顺序一致,缺失的列补NaN
all_dfs = [df1, df2, df3]
combined = pd.concat(all_dfs, ignore_index=True, sort=False)
print("\n纵向拼接结果:")
print(combined)

关键点:

  • pd.merge() 适合基于键列横向合并,how参数控制连接方式(outer保留所有数据)。
  • pd.concat() 适合纵向堆叠,ignore_index=True重置索引。
  • 如果列名不一致,先用rename统一或指定left_on/right_on参数。

总结:根据表结构选mergeconcat

df.update

一楼的方法是 ok 的

回到顶部