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
要获取第一个小时和最后一个小时Igroupby
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
要获取第一个小时和最后一个小时Igroupby
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分钟,如我的回答所示。你真的应该发布代码,即生成你在问题中发布的输出。