使用Python的pandas、numpy库实现不同列结构的Excel/CSV文件数据合并
可以实现,仅用pandas即可完成需求,操作如下:
核心逻辑
pandas处理表格数据时会自动按字段名对齐,不用关心原始字段顺序,只需要将第一个表的列顺序调整为第二个表的列顺序,补全缺失字段后合并去重即可。
具体操作步骤
- 导入依赖并读取两个CSV文件
import pandas as pd # 读取两个文件 df_first = pd.read_csv("first.csv") df_second = pd.read_csv("second.csv")
- 补全第一个表缺失的字段
这里示例给缺失的Description字段填充空字符串,你可以按需修改默认值:
- 补全第一个表缺失的字段
df_first["Description"] = "" # 如果有其他需要填充的默认值,可以用fillna批量处理,比如: # df_first = df_first.fillna({"Status": "待同步", "Date": "2024-01-01"})
- 按第二个表的字段顺序重排第一个表的列
df_first_aligned = df_first[df_second.columns]
- 合并两个表并按ID去重
如果两个表都存在ID=1的记录,keep="first"表示保留df_second中原有的记录,要保留df_first的记录就改为keep="last":
- 合并两个表并按ID去重
df_combined = pd.concat([df_second, df_first_aligned], ignore_index=True) df_combined = df_combined.drop_duplicates(subset="ID", keep="first") # 按ID排序可选,按需开启: # df_combined = df_combined.sort_values(by="ID", ignore_index=True)
- 导出结果文件
# 如果要直接覆盖原second.csv,把文件名改为"second.csv"即可 df_combined.to_csv("result_second.csv", index=False, encoding="utf-8-sig")
注意事项
如果你的CSV是GBK等非UTF-8编码格式,读取的时候加encoding参数即可,比如pd.read_csv("first.csv", encoding="gbk")。
内容的提问来源于stack exchange,提问作者Nirakar Nepal
相关产品推荐
相关产品推荐

