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

如何在pandas中按多列及datetime类型列的日期部分实现数据分组

解决步骤

1. 预处理时间列

首先把Date & Time列转换为pandas datetime格式,同时提取仅日期部分作为新的分组字段:

import pandas as pd

# 假设你的DataFrame变量名为df
df['Date & Time'] = pd.to_datetime(df['Date & Time'])
df['date_only'] = df['Date & Time'].dt.date

2. 按指定维度分组

直接以CELL ID、Party、date_only三个维度作为分组键,即可得到层级化的分组结果,你可以根据需要选择聚合方式,以下是两种常用场景的示例:

  • 场景1:统计每个分组下的记录条数
grouped_count = df.groupby(['CELL ID', 'Party', 'date_only']).size()

输出的结果自带CELL ID→Party→日期的三层MultiIndex层级结构,打印时会自动按层级缩进展示,符合要求的展示逻辑。

  • 场景2:保留每个分组下的所有原始行记录
grouped_raw = df.groupby(['CELL ID', 'Party', 'date_only']).apply(lambda x: x.to_dict('records'))

3. 示例输出效果

以给出的测试数据为例,统计记录数的输出结果如下:

CELL ID  Party    date_only
10631    3009787  2021-10-01    2
50987    2275172  2021-10-02    2
dtype: int64

如果需要更直观的树状层级打印,可以额外加一段遍历代码:

for (cell_id, party, date), group_data in grouped_count.items():
    print(f"CELL ID: {cell_id}")
    print(f"  └── Party: {party}")
    print(f"      └── Date: {date}, 记录数: {group_data}")

运行后输出效果:

CELL ID: 10631
  └── Party: 3009787
      └── Date: 2021-10-01, 记录数: 2
CELL ID: 50987
  └── Party: 2275172
      └── Date: 2021-10-02, 记录数: 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:54:05