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

如何在Pandas中统计DataFrame跨日期重复的order_id数量

相邻日期重复Order_id统计实现方案

步骤1:数据初始化与预处理

先构造示例DataFrame,并将日期列转换为datetime类型,保证后续日期排序和对比的准确性:

import pandas as pd

# 构造示例数据
data = {
    'Order_id': [1,2,3,4,5,6,2,1,2,7],
    'Order_date': ['2022-11-16','2022-11-16','2022-11-16','2022-11-16','2022-11-17','2022-11-17','2022-11-17','2022-11-17','2022-11-18','2022-11-18']
}
df = pd.DataFrame(data)

# 将日期列转换为datetime格式
df['Order_date'] = pd.to_datetime(df['Order_date'])

步骤2:提取每日唯一Order_id集合

按日期分组,提取每天的唯一Order_id并转换为集合(集合可快速计算交集):

# 分组后获取每日唯一Order_id的集合
daily_orders = df.groupby('Order_date')['Order_id'].unique().apply(set)
# 确保按日期顺序排列
daily_orders = daily_orders.sort_index()

步骤3:计算相邻日期的重复Order_id数量

遍历相邻日期对,通过集合交集操作统计重复的Order_id数量,并格式化输出结果:

for idx in range(1, len(daily_orders)):
    prev_day = daily_orders.index[idx-1]
    curr_day = daily_orders.index[idx]
    # 计算两天Order_id的交集长度
    repeat_count = len(daily_orders[prev_day] & daily_orders[curr_day])
    # 格式化日期为指定字符串格式
    prev_day_str = prev_day.strftime('%Y年%m月%d日')
    curr_day_str = curr_day.strftime('%Y年%m月%d日')
    # 输出结果
    print(f"{repeat_count} - {prev_day_str}至{curr_day_str}有{repeat_count}个order_id来自前一天")

运行结果

执行上述代码后,将得到预期输出:

2 - 2022年11月16日至2022年11月17日有2个order_id来自前一天
1 - 2022年11月17日至2022年11月18日有1个order_id来自前一天

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:40:24