Python中如何合并多个只填写了一部分的表格?
有个问题请教一下, 我现在有多个表 dataframe, 表的行数和格式是完全一样的, 只是每个同事填写其中的一部分不修改其中的格式, 现在我想把填好的所有的表合并, 把之前的空值替换成同事填好的怎么做 ?
我看 pandas 里面的函数 merge 是不行的, 不知道这个应该怎么做。
Python中如何合并多个只填写了一部分的表格?
4 回复
核心思路:用pandas的concat配合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参数。
总结:根据表结构选merge或concat。
df.update
一楼的方法是 ok 的

