I have a following problem. I would like to compute time period when each id occurs in df.
data = {'id': [2, 2, 2, 4, 4], 'time': ['22:17:46', '22:19:02', '22:06:00', '22:18:06', '22:18:06']}
pd.DataFrame.from_dict(data)
In the example above the desired output would be 22:19:02 - 22:06:00 = 13.03 minutes for id 2. Similarly 0 for id 4. Finally, what I want is:
data = {'id': [2, 2, 4, 2, 4], 'time': ['22:17:46', '22:19:02', '22:18:06', '22:06:00', '22:18:06'], 'time_diff': [13.03, 13.03, 0, 13.03, 0]}
I tried this, but it is terribly slow on large data:
data["max_time"] = data.groupby(["ip_adresa"])["time"].transform("max").astype(str)
data["min_time"] = data.groupby(["ip_adresa"])["time"].transform("min").astype(str)
data["time_diff"] = ""
for i in range(0, len(data)):
data["diff_time"][i] = (
datetime.datetime.strptime(data["max_time"][i], format)
- datetime.datetime.strptime(data["min_time"][i], format)
).total_seconds()
How can I do it please?