import\u0020pandas\u0020as\u0020pd import\u0020numpy\u0020as\u0020np

#\u0020读取原始excel文件 df\u0020=\u0020pd.read_excel('original_file.xlsx')

#\u0020根据列工序的值,物料编码PS的值进行合并处理 ps_df\u0020=\u0020df.groupby(['工序',\u0020'物料编码PS']).agg({ \u0020\u0020'位置':\u0020lambda\u0020x:\u0020',\u0020'.join(set(x)), \u0020\u0020'PS面积':\u0020np.sum, \u0020\u0020'物料描述PS':\u0020lambda\u0020x:\u0020',\u0020'.join(set(x)) }).reset_index()

#\u0020工序列改为PS工序,位置改为PS位置 ps_df.rename(columns={'工序':\u0020'PS工序',\u0020'位置':\u0020'PS位置'},\u0020inplace=True)

#\u0020根据列工序的值,物料编码SS的值进行合并处理 ss_df\u0020=\u0020df.groupby(['工序',\u0020'物料编码SS']).agg({ \u0020\u0020'位置':\u0020lambda\u0020x:\u0020',\u0020'.join(set(x)), \u0020\u0020'SS面积':\u0020np.sum, \u0020\u0020'物料描述SS':\u0020lambda\u0020x:\u0020',\u0020'.join(set(x)) }).reset_index()

#\u0020工序列改为SS工序,位置改为SS位置 ss_df.rename(columns={'工序':\u0020'SS工序',\u0020'位置':\u0020'SS位置'},\u0020inplace=True)

#\u0020创建新的excel文件 writer\u0020=\u0020pd.ExcelWriter('new_file.xlsx')

#\u0020将PS数据写入新的工作簿 ps_df.to_excel(writer, sheet_name='PS', index=False)

#\u0020将SS数据写入新的工作簿 ss_df.to_excel(writer, sheet_name='SS', index=False)

#\u0020关闭writer writer.save() writer.close()

#\u0020读取新的excel文件中的PS和SS工作簿 ps_sheet\u0020=\u0020pd.read_excel('new_file.xlsx', sheet_name='PS') ss_sheet\u0020=\u0020pd.read_excel('new_file.xlsx', sheet_name='SS')

#\u0020根据PS工序和SS工序以及物料编码PS和物料编码SS进行匹配合并 merged_df\u0020=\u0020pd.merge(ps_sheet, ss_sheet, left_on=['PS工序',\u0020'物料编码PS'], right_on=['SS工序',\u0020'物料编码SS'], how='outer')

#\u0020PS面积值和SS面积值相加 merged_df['PS面积']\u0020+=\u0020merged_df['SS面积']

#\u0020合并对应物料描述PS的值和物料描述SS的值并去除重复值 merged_df['物料描述PS']\u0020=\u0020merged_df['物料描述PS'].astype(str)\u0020+\u0020',\u0020' + merged_df['物料描述SS'].astype(str) merged_df['物料描述PS']\u0020=\u0020merged_df['物料描述PS'].apply(lambda\u0020x:\u0020',\u0020'.join(set(x.split(',\u0020'))))

#\u0020合并对应PS位置的值和SS位置的值并去除重复值 merged_df['PS位置']\u0020=\u0020merged_df['PS位置'].astype(str)\u0020+\u0020',\u0020' + merged_df['SS位置'].astype(str) merged_df['PS位置']\u0020=\u0020merged_df['PS位置'].apply(lambda\u0020x:\u0020',\u0020'.join(set(x.split(',\u0020'))))

#\u0020删除不需要的列 merged_df.drop(['SS工序',\u0020'SS位置',\u0020'物料编码SS'], axis=1, inplace=True)

#\u0020保存合并后的数据到新的excel文件 merged_df.to_excel('merged_file.xlsx', index=False

Python Pandas: 合并两个Excel表格并根据条件进行数据聚合和处理

原文地址: https://www.cveoy.top/t/topic/nhQo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录