Python 获取每天之间的小时范围

Python 获取每天之间的小时范围,python,pandas,timestamp,aggregate,Python,Pandas,Timestamp,Aggregate,我有一个包含时间戳的数据帧。我想知道从一天的第一次进入到最后一次进入之间的时间,这就是我所知道的: time | Hour ----------|--------- 2010-01-01| 06:44:00 2010-01-01| 06:28:00 2010-01-01| 14:47:00 2010-01-02| 06:44:00 2010-01-02| 06:28:00 2010-01-02| 15:57:00 这就是我想要的 --------------------- Day

我有一个包含时间戳的数据帧。我想知道从一天的第一次进入到最后一次进入之间的时间,这就是我所知道的:

time      | Hour
----------|---------
2010-01-01| 06:44:00 
2010-01-01| 06:28:00
2010-01-01| 14:47:00
2010-01-02| 06:44:00
2010-01-02| 06:28:00
2010-01-02| 15:57:00
这就是我想要的

---------------------
Day        | Hours
-----------|---------
2010-01-01 | 08:03:00
2010-01-02 | 09:13:00

我建议如下:

# 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
day之间的时差,请获取第一个和最后一个值,然后减去它们:

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

我建议如下:

# 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
day之间的时差,请获取第一个和最后一个值,然后减去它们:

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

您可以使用“重采样”并查找每天的最小值和最大值之间的差异。在阅读示例数据之前,我删除了“Hour”列名称,因此只有一个名为“Time”的列


您可以使用“重采样”并查找每天的最小值和最大值之间的差异。在阅读示例数据之前,我删除了“Hour”列名称,因此只有一个名为“Time”的列


您是如何在08:03:00到达输出示例的?在我看来,差异仅为16分钟,如我的回答所示。您应该发布代码,即生成您在问题中发布的输出。您是如何在08:03:00到达输出示例的?在我看来,差异仅为16分钟,如我的回答所示。你真的应该发布代码,即生成你在问题中发布的输出。