我有以下数据框:
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')
