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

如何从Pandas DataFrame中提取客户配送链并统计出现频次?

客户配送链统计实现方案

完全可以实现,以下是具体步骤和代码:

步骤1:生成各配送任务的客户顺序链

首先确保每个配送任务(SortieNumber)内的记录按配送时间(DateTime)排序,再将任务内的客户名称按顺序拼接成字符串形式的客户链(忽略ProductCode列)。

import pandas as pd

# 按配送任务号和时间排序,保证客户顺序符合实际配送流程
df_sorted = df.sort_values(['SortieNumber', 'DateTime'])

# 分组拼接每个任务的客户链
customer_chains = df_sorted.groupby('SortieNumber')['CustomerName'].apply(lambda x: '-'.join(x)).reset_index(name='CustomerChain')

步骤2:统计每条客户链的任务出现次数

对生成的客户链进行计数,得到每条链在多少个配送任务中出现:

# 统计链的出现次数,并格式化结果
chain_counts = customer_chains['CustomerChain'].value_counts().reset_index()
chain_counts.columns = ['CustomerChain', 'OccurrenceCount']

示例效果

假设你的原始数据如下:

DateTimeSortieNumberCustomerNameProductCode
2024-05-01 08:00S001JoshP001
2024-05-01 08:30S001AliceP002
2024-05-01 09:00S001RobertP003
2024-05-01 09:30S002JoshP001
2024-05-01 10:00S002AliceP002
2024-05-01 10:30S002RobertP003
2024-05-01 11:00S003AliceP002
2024-05-01 11:30S003RobertP003

运行代码后,chain_counts的结果为:

CustomerChainOccurrenceCount
Josh-Alice-Robert2
Alice-Robert1

这正好匹配你示例中"Josh-Alice-Robert在3次任务里出现2次"的需求。

可选调整

如果需要忽略同一配送任务内重复出现的客户(比如同一客户多次配送只保留一次),可以修改拼接逻辑为:

customer_chains = df_sorted.groupby('SortieNumber')['CustomerName'].apply(lambda x: '-'.join(x.unique())).reset_index(name='CustomerChain')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:16:05