我有一个数据集,每小时有不同火车站的日期输入/输出。其中一个问题是火车站的一些运营时间导致时间增量的不规则间隔(即一些火车在下午5:30关闭,因此一些行将具有05:30:00的奇数时间戳,而所有其他行在时间戳的分钟部分没有任何值)。
我想将数据标准化为每小时的间隔,并想折叠这些不规则的30分钟时间戳中的一些(因此,时间戳05:30:00的车站的任何进入/退出都应与时间戳05:00:00的进入/退出相加)。
有没有一种方法可以使用groupby/aggregate函数来执行此操作?
下面提供的是一个示例 Dataframe ,沿着我希望实现的最终结果:
df = pd.DataFrame(
{'Date Time':pd.to_datetime(['2023-01-01 00:00:00', '2023-01-01 00:00:00', '2023-01-01 00:00:00', '2023-01-01 00:30:00',
'2023-01-01 00:30:00', '2023-01-01 00:30:00', '2023-01-01 01:00:00',
'2023-01-01 01:00:00', '2023-01-01 01:00:00']),
'Station':['Station A', 'Station B', 'Station C', 'Station A', 'Station B', 'Station C','Station A', 'Station B', 'Station C'],
'Entries':[1, 2, 3, 1, 2, 3, 1, 2, 3],
'Exits':[1, 2, 3, 1, 2, 3, 1, 2, 3]}
)
输出:
| 日期时间|车站|参赛作品|出口|
| --------------|--------------|--------------|--------------|
| 2023年1月1日00时00分|A站|1|1|
| 2023年1月1日00时00分|B站|第二章|第二章|
| 2023年1月1日00时00分|C站|三|三|
| 2019 -01- 22 00:00:00|A站|1|1|
| 2019 -01- 22 00:00:00|B站|第二章|第二章|
| 2019 -01- 22 00:00:00|C站|三|三|
| 2023-01-01 01:00:00|A站|1|1|
| 2023-01-01 01:00:00|B站|第二章|第二章|
| 2023-01-01 01:00:00|C站|三|三|
预期输出:
| 日期时间|车站|参赛作品|出口|
| --------------|--------------|--------------|--------------|
| 2023年1月1日00时00分|A站|第二章|第二章|
| 2023年1月1日00时00分|B站|四|四|
| 2023年1月1日00时00分|C站|六|六|
| 2023-01-01 01:00:00|A站|1|1|
| 2023-01-01 01:00:00|B站|第二章|第二章|
| 2023-01-01 01:00:00|C站|三|三|
1条答案
按热度按时间7eumitmz1#
您可以显式地只对
Date Time
列的相关部分进行分组-在本例中是dt.date
和dt.hour
。first
可用于聚合内的“非求和”列。