使用 Pandas 合并和处理 Excel 数据,并生成新的工作簿
可以使用 Pandas 库来实现上述需求。
首先,我们需要读取原始的 Excel 文件,并将其转换为 Pandas 的 DataFrame 对象:
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('input.xlsx')
然后,根据列工序的值和物料编码 PS 的值对 DataFrame 进行分组,并对相应的列进行合并和求和操作:
# 根据列工序的值和物料编码 PS 的值进行分组
ps_grouped = df.groupby(['工序', '物料编码PS'])
# 合并位置的值,并去除重复值
df['位置'] = ps_grouped['位置'].transform(lambda x: ','.join(set(x)))
# 合并物料描述 PS 的值,并去除重复值
df['物料描述PS'] = ps_grouped['物料描述PS'].transform(lambda x: ','.join(set(x)))
# 求和 PS 面积的值
df['PS面积'] = ps_grouped['PS面积'].transform('sum')
# 修改工序列为 PS 工序
df['工序'] = 'PS工序'
# 修改位置列为 PS 位置
df.rename(columns={'位置': 'PS位置'}, inplace=True)
接下来,对物料编码 SS 的值进行类似的操作:
# 根据列工序的值和物料编码 SS 的值进行分组
ss_grouped = df.groupby(['工序', '物料编码SS'])
# 合并位置的值,并去除重复值
df['位置'] = ss_grouped['位置'].transform(lambda x: ','.join(set(x)))
# 合并物料描述 SS 的值,并去除重复值
df['物料描述SS'] = ss_grouped['物料描述SS'].transform(lambda x: ','.join(set(x)))
# 求和 SS 面积的值
df['SS面积'] = ss_grouped['SS面积'].transform('sum')
# 修改工序列为 SS 工序
df['工序'] = 'SS工序'
# 修改位置列为 SS 位置
df.rename(columns={'位置': 'SS位置'}, inplace=True)
最后,根据 PS 工序和 SS 工序的值,将 DataFrame 拆分为两个工作簿,并保存到新的 Excel 文件中:
# 创建一个新的 Excel 文件
writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')
# 将 PS 工序的数据保存到新的工作簿中
df[df['工序'] == 'PS工序'].to_excel(writer, sheet_name='PS工作簿', index=False)
# 将 SS 工序的数据保存到新的工作簿中
df[df['工序'] == 'SS工序'].to_excel(writer, sheet_name='SS工作簿', index=False)
# 保存 Excel 文件
writer.save()
最后得到的output.xlsx文件中将包含两个工作簿,分别为"PS工作簿"和"SS工作簿",其中包含了经过处理和合并后的数据。
原文地址: https://www.cveoy.top/t/topic/nidZ 著作权归作者所有。请勿转载和采集!