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

如何在DataFrame中识别并展示循环运输路径的成本与数量

解决方案:识别往返循环低效运输路线

一、Python(Pandas)实现

核心思路

先给互为反向的路线(如A→B和B→A)生成统一标识,再筛选出存在往返的路线组,最后合并计算这类循环路线的总成本与总运输量。

代码实现

import pandas as pd

# 加载数据(实际场景可替换为pd.read_csv/pd.read_excel)
data = [
    ['1/1/2022', 'A', 'B', 50.00, 450],
    ['1/2/2022', 'C', 'D', 75.00, 540],
    ['1/3/2022', 'B', 'A', 100.00, 450],
    ['1/4/2022', 'E', 'F', 50.00, 540],
    ['1/5/2022', 'C', 'B', 25.00, 300]
]
df = pd.DataFrame(data, columns=['日期', '起点', '终点', '成本', '数量'])

# 生成排序后的路线标识,让A→B和B→A拥有相同键
df['sorted_route'] = df[['起点', '终点']].apply(lambda x: tuple(sorted(x)), axis=1)

# 筛选出包含往返路线的分组
grouped = df.groupby('sorted_route').filter(lambda x: len(x) >= 2)

# 汇总循环路线的成本与数量
result = grouped.groupby('sorted_route').agg(
    route=('sorted_route', lambda x: f"{x[0][0]}→{x[0][1]}→{x[0][0]}"),
    total_cost=('成本', 'sum'),
    total_quantity=('数量', 'sum')
).reset_index(drop=True)

print(result)

输出结果

routetotal_costtotal_quantity
A→B→A150.00900

二、Excel实现

操作步骤

  1. 生成统一路线标识:在空白列(如F列)输入公式,让反向路线得到相同标识:

    =TEXTJOIN("→",TRUE,SORT(B2:C2))
    

    (注:B列为起点、C列为终点,Excel 2019及以上支持SORT函数;旧版本可改用=IF(B2<C2,B2&"→"&C2,C2&"→"&B2))

  2. 创建透视表汇总:选中数据区域插入透视表,将「排序路线标识」拖到「行」,「成本」「数量」拖到「值」(设置为求和),再把「起点」拖到「值」(设置为计数)。

  3. 筛选往返路线:在透视表的「计数项:起点」列筛选数值≥2的行,这些就是存在往返的低效路线组。

  4. 生成循环路线名称:在透视表旁新增列,用公式生成X→Y→X格式的路线名:

    =LEFT(F2,FIND("→",F2)-1)&"→"&MID(F2,FIND("→",F2)+1,LEN(F2))&"→"&LEFT(F2,FIND("→",F2)-1)
    

最终汇总效果

routetotal_costtotal_quantity
A→B→A150.00900

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:25:31