Skip to main content
 首页 » 编程设计

python Pandas : how to do operations within a group

2025年05月04日9unruledboy

我有以下数据框:

df = pd.DataFrame( 
    { 
    "group": [1,1,1,2,2], 
    "type": ["initial", "update", "update", "initial", "update"], 
    "update time": ["2019-01-01 12:00:00", "2019-01-03 12:00:00", "2019-01-05 12:00:00", "2019-01-02 12:00:00", "2019-01-04 12:00:00"], 
    "finish time": ["2019-01-07 12:00:00", "2019-01-07 12:00:00", "2019-01-08 12:00:00", "2019-01-05 12:00:00", "2019-01-05 12:00:00"] 
    } 
) 
 
df["update time"] = pd.to_datetime(df["update time"]) 
df["finish time"] = pd.to_datetime(df["finish time"]) 
 
df 

对于每一行,我想计算每个“组”的“初始”行的“完成时间”和“更新时间”之间的差异。如示例中所示,“完成时间”可以更改。

期望的输出是:

我想 groupby 是一个很好的起点,但我想不出整个解决方案。有什么想法吗?

非常感谢!

请您参考如下方法:

使用 transform('first') 将 update time 的所有第一个值广播到相同的形状。然后,简单的减法

df['finish time'] - df.groupby('group')['update time'].transform('first')