Python Pandas:如何在小组内进行操作?

Jul*_*ian 1 python dataframe pandas pandas-groupby

我有以下数据框:

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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

所需的输出是:

在此处输入图片说明

我想这groupby是一个很好的起点,但是我无法弄清楚整个解决方案。有任何想法吗?

非常感谢!

raf*_*elc 5

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

df['finish time'] - df.groupby('group')['update time'].transform('first')
Run Code Online (Sandbox Code Playgroud)


ank*_*_91 5

使用:

df['finish time']-df.groupby('group')['update time'].transform('first')
Run Code Online (Sandbox Code Playgroud)