gpt4 book ai didi

python - 聚合到基于 15 分钟的时间戳到小时,并找到 pandas 中多列的总和、平均值和最大值

转载 作者:行者123 更新时间:2023-11-28 21:04:52 25 4
gpt4 key购买 nike

我有一个 period_start_time 每 15 分钟的数据框,现在我需要聚合到 1 小时并计算数据框中几乎每一列的总和和平均值(它有大约 20 列)和

    PERIOD_START_TIME       ID      val1     val2
06.21.2017 22:15:00 12 3 0
06.21.2017 22:30:00 12 5 6
06.21.2017 22:45:00 12 0 3
06.21.2017 23:00:00 12 5 2
...
06.21.2017 22:15:00 15 9 2
06.21.2017 22:30:00 15 0 2
06.21.2017 22:45:00 15 1 5
06.21.2017 23:00:00 15 0 1
...

Desired output:
PERIOD_START_TIME ID val1(avg) val1(sum) val1(max) ...
06.21.2017 22:00:00 12 3.25 13 5
...
06.21.2017 23:00:00 15 2.25 10 9 ...

对于列 val2 也是如此,对于数据框中的所有其他列也是如此。我不知道如何按每个小时的时间段开始时间分组,而不是一整天,不知道如何开始。

最佳答案

我相信你需要Series.dt.floor Hour 秒,然后按 agg 聚合:

df = df.groupby([df['PERIOD_START_TIME'].dt.floor('H'),'ID']).agg(['mean','sum', 'max'])
#for columns from MultiIndex
df.columns = df.columns.map('_'.join)
print (df)
val1_mean val1_sum val1_max val2_mean val2_sum \
PERIOD_START_TIME ID
2017-06-21 22:00:00 12 2.666667 8 5 3 9
15 3.333333 10 9 3 9
2017-06-21 23:00:00 12 5.000000 5 5 2 2
15 0.000000 0 0 1 1

val2_max
PERIOD_START_TIME ID
2017-06-21 22:00:00 12 6
15 5
2017-06-21 23:00:00 12 2
15 1

df = df.reset_index()
print (df)
PERIOD_START_TIME ID val1_mean val1_sum val1_max val2_mean val2_sum \
0 2017-06-21 22:00 12 2.666667 8 5 3 9
1 2017-06-21 22:00 15 3.333333 10 9 3 9
2 2017-06-21 23:00 12 5.000000 5 5 2 2
3 2017-06-21 23:00 15 0.000000 0 0 1 1

val2_max
0 6
1 5
2 2
3 1

关于python - 聚合到基于 15 分钟的时间戳到小时,并找到 pandas 中多列的总和、平均值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44800251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com