从同一组的每一行中减去groupby数据帧中每组的最后一行

时间:2019-02-23 14:18:27

标签: python pandas pandas-groupby

我有一个数据集,其中包含案例和属于这些案例的事件。在这种情况下,我想从每个事件中减去第一个事件的第一个日期时间,以获取自案件开始以来经过的时间。

我这样做:

grouped = data.groupby("case_id")
data["T_elapsed"] = grouped["event_id"].transform(lambda x: x-x.iloc[0])

它可以工作,但是对于更大的数据集来说它非常慢。有没有计算成本更低的替代方法可以做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用firstSeries的{​​{3}},减去列data['event_id']

grouped = data.groupby("case_id")
data["T_elapsed"] = data['event_id'] - grouped["event_id"].transform('first')

grouped = data.groupby("case_id")
data["T_elapsed"] = data['event_id'] - grouped["event_id"].transform('last')