Nanue 2023-04-21 14:14 采纳率: 66.7%
浏览 70
已结题

请教,使用Pandas如何在Excel中实现以下自动查询功能?

如图所示,在B3至E3中输入物料代号及物料的长宽高,然后Excel根据输入的物料代号跳转到相对应的区域,并使用输入的物料的长宽高与可用包装型号的适用范围进行比较,自动选择合适的包装型号并显示在F3单元格中(若出现多个合适型号,则依次在F4,F5....中显现)。举例:输入代号2222,输入长3,宽2,厚6,自动跳转到(D10:I12)区域,然后在区域内用3,2,6三个数逐行比较,找到三个数均在其适用范围内的包装型号,即gb,然后将gb显示在F3中,结束。

img

  • 写回答

5条回答 默认 最新

  • Zyb0627 2023-04-21 21:56
    关注

    引用chatGPT作答,要使用 Pandas 在 Excel 中实现此功能,需要进行以下步骤:

    1.读取 Excel 文件中的数据,并将其存储为 Pandas DataFrame。
    2.从 B3 至 E3 的单元格中获取物料代号及物料的长宽高,同时获取包装型号与其适用范围的数据。
    3.根据物料代号,查找相应的区域,并将其转换为 DataFrame。
    4.遍历区域内的每一行,将长、宽、高与适用范围进行比较,找到合适的包装型号。
    5.如果存在多个合适的包装型号,则将它们依次显示在 F4、F5、F6…… 单元格中。
    6.如果没有找到任何合适的包装型号,则在 F3 单元格中显示“无可用包装型号”。
    以下是一种可能的实现方法:

    import pandas as pd
    
    # 读取 Excel 文件中的数据,并将其存储为 Pandas DataFrame。
    df = pd.read_excel("data.xlsx", sheet_name="Sheet1", header=None)
    
    # 从 B3 至 E3 的单元格中获取物料代号及物料的长宽高。
    material_code = df.iloc[2, 1]
    length = df.iloc[2, 2]
    width = df.iloc[2, 3]
    height = df.iloc[2, 4]
    
    # 获取包装型号与其适用范围的数据。
    packaging_df = df.iloc[5:, 3:9].dropna()
    
    # 根据物料代号,查找相应的区域,并将其转换为 DataFrame。
    material_area = df.loc[df[0] == material_code, [3, 4, 5, 6, 7, 8]]
    material_area.columns = ["Length Min", "Length Max", "Width Min", "Width Max", "Height Min", "Height Max"]
    material_area = material_area.dropna()
    
    # 遍历区域内的每一行,将长、宽、高与适用范围进行比较,找到合适的包装型号。
    suitable_packaging = []
    for index, row in packaging_df.iterrows():
        if row["Length Min"] <= length <= row["Length Max"] and \
           row["Width Min"] <= width <= row["Width Max"] and \
           row["Height Min"] <= height <= row["Height Max"]:
            suitable_packaging.append(row["Packaging Type"])
    
    # 如果存在多个合适的包装型号,则将它们依次显示在 F4、F5、F6…… 单元格中。
    if suitable_packaging:
        for i, packaging in enumerate(suitable_packaging):
            df.iloc[2+i, 5] = packaging
    # 如果没有找到任何合适的包装型号,则在 F3 单元格中显示“无可用包装型号”。
    else:
        df.iloc[2, 5] = "无可用包装型号"
    
    # 将结果写回 Excel 文件中。
    df.to_excel("data.xlsx", sheet_name="Sheet1", index=False, header=False)
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 请选择合适的标签 4月21日
  • 修改了问题 4月21日
  • 展开全部

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度