Pandas 合并 Excel 数据:根据工序和物料编码聚合数据
要实现上述需求,可以使用 Pandas 库来处理 Excel 数据。下面是一个可能的实现方式:\n\npython\nimport pandas as pd\n\n# 读取原始 Excel 文件\ndf = pd.read_excel("原始文件.xlsx")\n\n# 处理 PS 工序数据\nps_df = df[df['工序'] == 'PS']\nps_grouped = ps_df.groupby('物料编码PS').agg({\n '位置': lambda x: ','.join(set(x)),\n 'PS面积': 'sum',\n '物料描述PS': lambda x: ','.join(set(x))\n}).reset_index()\nps_grouped['工序'] = 'PS'\nps_grouped.rename(columns={'位置': 'PS位置'}, inplace=True)\n\n# 处理 SS 工序数据\nss_df = df[df['工序'] == 'SS']\nss_grouped = ss_df.groupby('物料编码SS').agg({\n '位置': lambda x: ','.join(set(x)),\n 'SS面积': 'sum',\n '物料描述SS': lambda x: ','.join(set(x))\n}).reset_index()\nss_grouped['工序'] = 'SS'\nss_grouped.rename(columns={'位置': 'SS位置'}, inplace=True)\n\n# 合并 PS 和 SS 工序数据\nmerged_df = pd.concat([ps_grouped, ss_grouped])\nmerged_df['位置'] = merged_df.apply(lambda row: row['PS位置'] if row['工序'] == 'PS' else row['SS位置'], axis=1)\nmerged_df['工序'] = merged_df['工序'].apply(lambda x: 'PS' if x == 'PS' else 'SS')\n\n# 处理 SS 工序等于 PS 工序且物料编码 PS 等于物料编码 SS 的情况\nps_ss_df = merged_df[(merged_df['工序'] == 'SS') & (merged_df['物料编码PS'] == merged_df['物料编码SS'])]\nps_ss_grouped = ps_ss_df.groupby('物料编码SS').agg({\n 'PS面积': 'sum',\n '物料描述SS': lambda x: ','.join(set(x)),\n 'PS位置': lambda x: ','.join(set(x))\n}).reset_index()\nps_ss_grouped['工序'] = 'SS'\nps_ss_grouped.rename(columns={'PS面积': 'SS面积', 'PS位置': 'SS位置'}, inplace=True)\n\n# 合并处理后的数据\nfinal_df = pd.concat([merged_df, ps_ss_grouped])\n\n# 保存到新的 Excel 文件\nfinal_df.to_excel("处理后的文件.xlsx", index=False)\n\n\n这段代码首先读取原始 Excel 文件,然后根据工序进行数据处理和合并。最后将处理后的数据保存到新的 Excel 文件中。请注意将代码中的 "原始文件.xlsx" 和 "处理后的文件.xlsx" 替换为实际的文件路径。
原文地址: https://www.cveoy.top/t/topic/niM2 著作权归作者所有。请勿转载和采集!