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

基于按组划分日期的条件处理需求及对应数据集提交

按日期分组处理数据集的实用方案

嘿,我看你需要基于日期分组来处理这份带用户和数值的数据集,用Python的pandas就能轻松搞定,下面是一步步的实操方法:

1. 先把原始数据规整成可处理的格式

你的原始数据里E列看起来是空格分隔的两个数值,先把它拆成单独的列,方便后续计算:

import pandas as pd

# 把你给的原始数据转成列表
data = [
    [0, '2002-01-12', '2018-04-25 10:00:00', 'John', '19 19'],
    [1, '2002-01-12', '2018-04-25 11:00:00', 'John', '6 25'],
    [2, '2002-01-13', '2018-04-25 09:00:00', 'John', '5 30'],
    [3, '2002-01-13', '2018-04-25 11:00:00', 'John', '-25 5'],
    [4, '2002-01-14', '2018-04-25 11:00:00', 'John', '1 6'],
    [5, '2002-01-14', '2018-04-25 12:00:00', 'John', '44 50'],
    [6, '2002-01-25', '2018-04-25 11:00:00', 'George', '18 18'],
    [7, '2002-01-25', '2018-04-25 12:00:00', 'George', '12 30'],
    [8, '2002-01-26', '2018-04-25 11:00:00', 'George', '-8 22'],
    [9, '2002-01-26', '2018-04-25 12:00:00', 'George', '-10 12'],
    [10, '2002-01-27', '2018-04-25 10:00:00', 'George', '13 25']
]

# 创建DataFrame,给列命名
df = pd.DataFrame(data, columns=['A', 'B', 'C', 'D', 'E'])

# 拆分E列成两个数值列,删掉原来的E列
df[['E1', 'E2']] = df['E'].str.split(' ', expand=True).astype(int)
df.drop('E', axis=1, inplace=True)

2. 按单一日期维度分组(只看B列日期)

如果你只想按B列的日期来汇总数据,比如计算每天的E1、E2总和、平均值,代码如下:

# 按B列日期分组,指定要计算的聚合指标
grouped_by_date = df.groupby('B').agg(
    E1总和=('E1', 'sum'),
    E1平均值=('E1', 'mean'),
    E2总和=('E2', 'sum'),
    E2平均值=('E2', 'mean')
).reset_index()

# 打印结果
print(grouped_by_date)

运行后就能得到每个日期对应的数值汇总,比如2002-01-12这天,John的E1总和是25,E2总和是44。

3. 按日期+用户双维度分组(更精准的分组)

因为数据里有John和George两个不同用户,同一日期下他们的数据是分开的,所以按日期+用户分组会更合理:

# 按B列日期和D列用户分组,统计总和和记录数
grouped_by_date_user = df.groupby(['B', 'D']).agg(
    E1累计=('E1', 'sum'),
    E2累计=('E2', 'sum'),
   当日记录数=('A', 'count')
).reset_index()

print(grouped_by_date_user)

这个结果会清晰展示每个用户在每一天的所有数据汇总,比如George在2002-01-26的E1累计是-18,E2累计是34,当天有2条记录。

4. 进阶:按周/月等周期分组

如果需要按更大的时间周期(比如月份、周)来分组,先把B列转成日期类型,再提取周期即可:

# 把B列转换成datetime格式,方便周期处理
df['B'] = pd.to_datetime(df['B'])

# 按月份分组汇总
grouped_by_month = df.groupby(df['B'].dt.to_period('M')).agg(
    E1月度总和=('E1', 'sum'),
    E2月度总和=('E2', 'sum')
).reset_index()

# 按周分组(周一为每周的第一天)
grouped_by_week = df.groupby(df['B'].dt.isocalendar().week).agg(
    E1周度总和=('E1', 'sum'),
    E2周度总和=('E2', 'sum')
).reset_index()

小提示

如果你的需求不是聚合计算,而是其他操作(比如分组后填充缺失值、排序),可以用groupby之后的apply方法自定义函数来实现,灵活度很高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:36:03