如何使用Python实现Vlookup属性匹配后行转列的自动化处理
实现方案
你可以直接用pandas完成这个自动化流程,以下是可直接运行的参考代码:
首先导入依赖库:
import pandas as pd
步骤1:导入你的数据
你可以先用模拟数据测试,再替换成自己的真实数据读取逻辑:
# 模拟第一个表:水果品类数量表 df_fruit = pd.DataFrame({ "idx": [1,2,3,4], "Group": ["苹果", "苹果", "橙子", "菠萝"], "Family": ["红富士", "嘎啦果", "脐橙", "金钻凤梨"], "Quantity": [120, 89, 230, 76] }) # 模拟第二个表:审计属性表 df_audit = pd.DataFrame({ "Group audit": ["苹果", "苹果", "苹果", "苹果", "橙子", "橙子", "菠萝", "菠萝", "西瓜", "西瓜"], "Audit variations": ["Quality", "Variations", "Family", "Defect", "甜度", "酸度", "重量", "成熟度", "瓜纹", "含水量"] })
如果你的数据存在本地文件里,把上面的构造代码替换成对应读取逻辑即可:
- csv文件用
df = pd.read_csv("你的文件路径.csv") - Excel文件用
df = pd.read_excel("你的文件路径.xlsx")
步骤2:处理审计表,把审计维度从行转成列
# 按品类分组,把同一个品类的所有审计维度聚合为列表 audit_grouped = df_audit.groupby("Group audit")["Audit variations"].apply(list).reset_index() # 把聚合的列表拆为独立的空列 audit_wide = audit_grouped.join( pd.DataFrame(audit_grouped["Audit variations"].tolist(), index=audit_grouped.index) ).drop("Audit variations", axis=1)
步骤3:匹配两个表,输出最终结果
# 左连接保留第一个表的所有行,匹配对应品类的审计列 df_final = df_fruit.merge( audit_wide, left_on="Group", right_on="Group audit", how="left" ).drop("Group audit", axis=1)
运行完成后df_final就是你需要的结果,会自动根据匹配到的品类追加对应审计维度的空列,无需手动新增。
内容的提问来源于stack exchange,提问作者Parvathy Menon
相关产品推荐
相关产品推荐

