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

如何为DataFrame按A列日期分组添加B列首个值的C列?

解决DataFrame按日期分组添加对应组首值列的问题

嘿,我来帮你搞定这个需求!要给DataFrame新增一列C,让它对应A列日期分组后每组B列的第一个值,用pandas可以轻松实现,我给你具体的方案和示例:

先看示例数据

首先构造一个模拟的DataFrame,方便你理解:

import pandas as pd

df = pd.DataFrame({
    'A': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-02'],
    'B': [10, 20, 30, 40, 50]
})

方法1:用groupby + transform(最直接)

这是最推荐的方式,transform会把分组计算的结果广播回原DataFrame的每一行,完美匹配原数据长度:

df['C'] = df.groupby('A')['B'].transform('first')

方法2:用字典映射(适合复用场景)

如果之后还需要用到分组首值的映射关系,可以先把它转成字典,再用map匹配:

# 先获取每个日期对应的B列首值字典
first_value_dict = df.groupby('A')['B'].first().to_dict()
# 映射到原DataFrame的A列,生成C列
df['C'] = df['A'].map(first_value_dict)

最终效果

两种方法运行后,你的DataFrame会变成这样:

ABC
2023-01-011010
2023-01-012010
2023-01-023030
2023-01-024030
2023-01-025030

可能的踩坑点

如果你之前尝试时没成功,大概率是直接用了df.groupby('A')['B'].first()赋值——这个操作只会返回每个分组的一个值,长度和原DataFrame不匹配,所以会报错或者出现NaN。而上面的两种方法都是把结果对应到每一行,就不会有这个问题啦!

内容的提问来源于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.19 09:49:59