Я предлагаю следующее:
# First I recreate a similar dataframe:
import pandas as pd
df = pd.DataFrame({"day": ["2010-01-01", "2010-01-01","2010-01-02","2010-01-02", "2010-01-02"],
"hour": pd.date_range("2010-01-01 06:44:00", freq="h", periods=5)})
df.hour = df.hour.dt.time
Мой df:
day hour
0 2010-01-01 06:44:00
1 2010-01-01 07:44:00
2 2010-01-02 08:44:00
3 2010-01-02 09:44:00
4 2010-01-02 10:44:00
Чтобы получить разницу во времени между первым и последним часом I groupby
день, получите первый и последний значения, а затем вычтите их:
df = df.sort_values(["day", "hour"])
df["hour"] = pd.to_datetime(df["day"] + " " + df["hour"].astype("str"))
df = df.groupby("day").hour.agg(["first", "last"])
df = df["last"] - df["first"]
df = df.reset_index().rename(columns={0:'hours'})
И результат:
day hours
0 2010-01-01 01:00:00
1 2010-01-02 02:00:00