page contents

excel文件处理之合并重复列文件

数据: 子excel文件,其中有多个重复列数据。 总excel文件,其中包含了子excel中的全部数据列。 需求: 将子文件中的列数据添加到总excel文件对应的列中,如果当前子文件中的列不在总文件列...

数据:

子excel文件,其中有多个重复列数据。

attachments-2023-03-Al9wWkVK641bfe6f36b69.png

总excel文件,其中包含了子excel中的全部数据列。

attachments-2023-03-rjbhHMdN641bfe8a48422.png

需求:

将子文件中的列数据添加到总excel文件对应的列中,如果当前子文件中的列不在总文件列中,则不处理对应的列。效果如下图

attachments-2023-03-XGWP2X9O641bfead2e002.png

环境:

编程语言:Python

涉及第三方库:pandas

代码编辑环境:jupyter notebook


代码实现:

     1. 导入第三方库

import pandas as pd

    2.导入并查看相关数据

data = pd.read_excel('1.xlsx') # 子文件
data2 = pd.read_excel('2.xlsx') # 总数据文件
data
data2

    3.定义变量,获取2个文件的列名

data_co = list(data.columns)
data2_co = list(data2.columns)

    4.定义空的DataFrame对象,用于存储总文件中列和子文件中列数据合并的结果。

注意:如果直接将合并后的数据添加到data2中会数据丢失的情况。即DataFrame对象有10行,合并后的数据有15行,则后5行数据可能丢失。

new_df = pd.DataFrame(columns=data2_co)

    5.数据合并代码

# 循环总文件中的列名
for i in data2_co:
    # 将总文件中对应的列拿出来,并将中间的空值删除
    data_s = data2[i].dropna()
    # 循环获取文件1的列名
    for j in data_co:
        # 判断 A A.1  A.2
        if i in j:
            data_s = pd.concat([data_s,data[j]],ignore_index=True)# 合并数据,并重置合并后数据的行索引
    # 将数据保存到new_df中
    new_df[i]=data_s
new_df

    6.数据空值处理

    由于部分列在处理的时候可能是没有的,代码会自动将里面的数据用numpy中的'NAN'进行填充,这里将空值使用空字符进行替换。也可以自行使用其他字符替换。

new_df.fillna('',inplace=True)# 第一个参数表示使用什么数据来替换 ‘NAN’,第二个表示对原数据进行修改,默认不修改原数据

    7.数据保存

new_df.to_excel('2.xlsx',
               # 设置数据保存的工作表名
               sheet_name='sheet1',
               index=False #在保存的时候不保存数据对象中的列索引
               )
  • 发表于 2023-03-23 15:22
  • 阅读 ( 390 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小科老师
小科老师

1 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章