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

Python中如何按分组合并数据集并为每个分组重置日期序列

数据集全量匹配实现方案

需求为两个单字段数据集做笛卡尔积组合:每个分组值匹配全部日期值,最终输出9条记录的结果集,以下是不同场景下的可落地方案:

Pandas 实现(Python 数据处理场景)

方法1:乘积索引生成(性能最优,推荐)

直接通过pandas内置的多层索引乘积方法生成所有值的组合,无需额外临时字段,处理大数据集时效率最高:

import pandas as pd

# 初始化示例源数据
df1 = pd.DataFrame({'Date': ['2021-01-01', '2021-01-02', '2021-01-03']})
df2 = pd.DataFrame({'Group': ['A', 'B', 'C']})

# 生成全量组合
dfdesired = pd.MultiIndex.from_product(
    [df2['Group'], df1['Date']],
    names=['Group', 'Date']
).to_frame(index=False).reindex(columns=['Date', 'Group'])

方法2:辅助键等值连接(逻辑直观,易理解)

给两个数据集添加值恒为1的临时字段,通过等值内连接实现笛卡尔积效果,逻辑和SQL交叉连接一致,新手易理解:

# 添加统一临时连接键
df1['join_key'] = 1
df2['join_key'] = 1

# 连接后删除临时键,调整字段顺序
dfdesired = df2.merge(df1, on='join_key').drop(columns=['join_key'])[['Date', 'Group']]

SQL 实现(数据库查询场景)

直接使用CROSS JOIN交叉连接语法即可得到全量组合结果:

SELECT
  d.Date,
  g.Group
FROM df1 d
CROSS JOIN df2 g
ORDER BY g.Group, d.Date;

结果校验

最终输出的dfdesired共9条记录,结构符合预期:

  • A组:匹配2021-01-01、2021-01-02、2021-01-03三个日期
  • B组:匹配2021-01-01、2021-01-02、2021-01-03三个日期
  • C组:匹配2021-01-01、2021-01-02、2021-01-03三个日期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:06:26