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

如何在DataFrame中按类别计算MtD、YtD均价并保留最新2个工作日数据

解决多类别时间序列的MtD/YtD均价计算及最新数据保留问题

步骤说明

  1. 转换日期格式并排序:将date列转为datetime类型,按类别和日期降序排序,方便提取最新数据。
  2. 分组计算均价:按类别分组,分别计算**年初至今(YtD)和月初至今(MtD)**的价格均值。
  3. 提取最新数据:保留每个类别最新的2个工作日数据。
  4. 合并结果:将均价统计与最新数据合并,得到最终结果。

完整代码

import pandas as pd

# 构造示例DataFrame
data = {
    'category': ['A']*6 + ['B']*6 + ['C']*6,
    'date': ['2022-12-19', '2022-12-16', '2022-12-15', '2022-12-14', '2022-12-13', '2022-12-12']*3,
    'price': [5,5,21,21,15,18,48,92,212,185,874,51,15,65,874,485,52,99]
}
df = pd.DataFrame(data)

# 1. 转换日期类型并按类别+日期降序排序
df['date'] = pd.to_datetime(df['date'])
df_sorted = df.sort_values(['category', 'date'], ascending=[True, False])

# 2. 按类别分组计算YtD和MtD均价
grouped_stats = df.groupby('category').apply(lambda x: pd.Series({
    # YtD:当年所有数据的均价(示例数据全为2022年,若跨年需筛选年份)
    'YtD_avg': x['price'].mean(),
    # MtD:当月所有数据的均价,取组内最大日期的月份作为目标月
    'MtD_avg': x[x['date'].dt.month == x['date'].dt.month.max()]['price'].mean()
})).reset_index()

# 3. 提取每个类别最新的2个工作日数据
latest_2_records = df_sorted.groupby('category').head(2)

# 4. 合并均价统计与最新数据
final_result = pd.merge(latest_2_records, grouped_stats, on='category')

# 调整列顺序,优化展示
final_result = final_result[['category', 'date', 'price', 'MtD_avg', 'YtD_avg']]

print(final_result)

代码解释

  • 日期处理:pd.to_datetime将字符串日期转为可操作的datetime对象,排序后保证最新数据在每组的最前面。
  • YtD均价:示例数据仅包含2022年,直接取组内所有价格的均值;若数据跨年,可添加x['date'].dt.year == 目标年份的筛选条件。
  • MtD均价:通过x['date'].dt.month.max()获取当前组的最新月份,筛选该月份的所有数据计算均值,适配任意月份的计算需求。
  • 最新数据提取:groupby('category').head(2)直接获取每组前2条(已降序排序,即最新的2个工作日数据)。

输出结果

category       date  price    MtD_avg    YtD_avg
0        A 2022-12-19      5  14.166667  14.166667
1        A 2022-12-16      5  14.166667  14.166667
2        B 2022-12-19     48  243.666667  243.666667
3        B 2022-12-16     92  243.666667  243.666667
4        C 2022-12-19     15  298.166667  298.166667
5        C 2022-12-16     65  298.166667  298.166667

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:18:09