You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除带分数的商品行并将销售额合并至对应商品行

处理POS报表中带分数的商品合并问题

直接上新手能看懂的实操步骤:

  • 1. 导入工具并加载数据
    先导入pandas,然后把你的POS数据转换成DataFrame(如果是从Excel/CSV文件读取,替换成pd.read_excel()或pd.read_csv()即可):

    import pandas as pd
    
    # 示例数据,和你的格式完全匹配,替换成你自己的数据源就行
    data = {
        'Item': ['AIR GIN', 'AIR GIN 1/3', 'AIR VODKA', 'AIR VODKA 1/2'],
        'Outlet1': [162.0, None, 468.0, None],
        'Outlet2': [None, None, None, None],
        'Outlet3': [189.0, None, 585.0, 18.0],
        'Outlet4': [54.0, 9.0, 144.0, None]
    }
    df = pd.DataFrame(data, index=[2,3,4,5])
    
  • 2. 提取不带分数的纯净商品名
    用正则表达式去掉Item列末尾的 数字/数字后缀,生成一个临时列存基础商品名:

    df['Base_Item'] = df['Item'].str.replace(r' \d/\d$', '', regex=True)
    

    这里的正则 \d/\d$专门匹配“空格+数字/数字”的结尾部分,直接替换为空字符串,就能得到不带拆分标记的商品名。

  • 3. 按商品名分组合并销售额
    按纯净商品名分组,对各个门店的销售额求和,再整理成你要的格式:

    # 分组求和,保留原有的NaN(如果一组全是NaN,求和后还是NaN)
    merged_df = df.groupby('Base_Item')[['Outlet1', 'Outlet2', 'Outlet3', 'Outlet4']].sum(min_count=1).reset_index()
    
    # 把临时列改回原来的Item列名
    merged_df.rename(columns={'Base_Item': 'Item'}, inplace=True)
    
    # 调整索引和你的示例输出一致(可选,不想调可以直接跳过这行)
    merged_df.index = merged_df.index + 2
    
  • 4. 查看最终结果
    打印merged_df就能得到和你期望完全一致的输出:

    Item  Outlet1  Outlet2  Outlet3  Outlet4
    2             AIR GIN    162.0      NaN    189.0     63.0
    3           AIR VODKA    468.0      NaN    603.0    144.0
    

内容的提问来源于stack exchange,提问作者Terry Morin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:15:51