yyc9527 2024-01-30 16:37 采纳率: 83.9%
浏览 4
已结题

python批量合并Excel表

问题:有几百个excel表,这些表有些字段意义一样但命名不同,也有一些表中有独有的字段

需求·:合并这几百个excel表到一个表中,意义相同但字段名不同的也合并在一起,保留独有的字段

目前:用了一下pandas中concat,但是意义相同字段名不同的合并不到一列,有没有办法能解决,谢谢

  • 写回答

3条回答 默认 最新

  • 叫兽-郭老师 Java领域新星创作者 2024-01-30 18:06
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    在Python中使用pandas合并多个Excel文件时,如果遇到字段(列)意义相同但命名不同的情况,你需要先对列名进行统一处理,然后再进行合并。以下是一个大概的步骤:

    1. 读取所有Excel文件:首先,遍历目录下的所有Excel文件,并用pandas的read_excel函数将它们逐个读入为DataFrame。
    import pandas as pd
    import os
    
    # 指定包含Excel文件的目录
    directory = 'path_to_your_directory'
    
    # 初始化一个空列表来存储所有数据帧
    data_frames = []
    
    # 遍历目录下所有文件
    for filename in os.listdir(directory):
        if filename.endswith('.xlsx') or filename.endswith('.xls'):  # 检查是否是Excel文件
            filepath = os.path.join(directory, filename)
            df = pd.read_excel(filepath)
            data_frames.append(df)
    
    1. 重命名列以匹配
      • 你可以创建一个映射字典,其中键是当前列名,值是你要统一的新列名。
      • 然后,对每个数据帧应用这个映射规则,使用rename函数。
    # 假设你有这样一个映射规则
    column_mapping = {
        'old_column_name1': 'new_common_name1',
        'different_column_name1': 'new_common_name2',  # 不同表中的不同列名对应同一个新名称
        # ... 其他列名映射...
    }
    
    # 应用到每个DataFrame上
    for i, df in enumerate(data_frames):
        data_frames[i] = df.rename(columns=column_mapping)
    
    1. 合并数据帧:现在所有的数据帧都有了统一的列名,可以使用pd.concat函数将它们垂直(按行)合并在一起。
    # 合并所有DataFrame
    merged_df = pd.concat(data_frames, ignore_index=True)  # 使用ignore_index=True重置索引
    
    1. 处理独有的列
      • 如果某些表格中有独有的列,且希望保留,在上述步骤之后这些独有的列自然会被保留在最终的merged_df中。

    注意:在实际操作前,请确保所有具有相同含义的列的数据类型一致,否则可能需要进一步的数据预处理和清洗工作。

    如果你想要水平(按列)合并,即同一行内合并不同源的列数据,则可能需要用到merge函数,并根据共同的键(如时间戳或ID等)来进行合并。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月11日
  • 已采纳回答 2月3日
  • 创建了问题 1月30日

悬赏问题

  • ¥15 求:可不可以提供一些 在国内可以用,低代码不要太难 在电脑上可以下载的 制作app的软件
  • ¥60 找人回答kibana8.14.3二次集成开发,自定义插件ui导航栏如何设置
  • ¥15 fluke高精度万用表8845A型号测交流电压一直跳动,且去掉输入后显示不归零
  • ¥15 不同模型怎么用同一个shader
  • ¥15 安卓启动没有ais proxy与v4l2的log打印
  • ¥15 go怎么读取mdb文件里面的数据
  • ¥60 Matlab联合CRUISE仿真编译dll文件报错
  • ¥15 脱敏项目合作,ner需求合作
  • ¥15 脱敏项目合作,ner需求合作
  • ¥30 Matlab打开默认名称带有/的光谱数据