gpt4 book ai didi

python - 在 Pandas 中分组

转载 作者:行者123 更新时间:2023-12-02 20:36:00 24 4
gpt4 key购买 nike

考虑以下数据集:

min    5-min     a
0 0 800
0 0 801
1 0 802
1 0 803
1 0 804
2 0 805
2 0 805
2 0 810
3 0 801
3 0 802
3 0 803
4 0 804
4 0 805
5 1 806
5 1 800
5 1 890
6 1 890
6 1 880
6 1 800
7 1 804
7 1 806
8 1 801
9 1 800
9 1 900
10 1 770
10 1 803
10 1 811

我需要根据分钟计算每组的标准差,然后计算每组 5 分钟的结果值的平均值。我不知道如何在标准计算后找到 5 分钟的边界。我应该如何保存数据才能知道每组 5 分钟属于哪个标准?

data.groupby('minute').a.std()

如果有任何帮助,我将不胜感激。

最佳答案

Taskos 的答案很好,但我不确定您是否需要将数据推回到数据框中。假设您想要的是在每次 groupby 操作后在父级中添加新列,我选择按如下方式为您执行此操作

import pandas as pd

df = your_df

# First we create the standard deviation column

def add_std(grp):
grp['stdevs'] = grp['a'].std()
return grp

df = df.groupby('min').apply(add_std)

# Next we create the 5 minute mean column

def add_meandev(grp):
grp['meandev'] = grp['stdevs'].mean()
return grp

print(df.groupby('5-min').apply(add_meandev))

这可以通过链接等方式更优雅地完成,但我选择这样布局,以便您更清楚地看到底层过程。

最终输出如下所示:

    min  5-min    a     stdevs    meandev
0 0 0 800 0.707107 1.345283
1 0 0 801 0.707107 1.345283
2 1 0 802 1.000000 1.345283
3 1 0 803 1.000000 1.345283
4 1 0 804 1.000000 1.345283
5 2 0 805 2.886751 1.345283
6 2 0 805 2.886751 1.345283
7 2 0 810 2.886751 1.345283
8 3 0 801 1.000000 1.345283
9 3 0 802 1.000000 1.345283
10 3 0 803 1.000000 1.345283
11 4 0 804 0.707107 1.345283
12 4 0 805 0.707107 1.345283
13 5 1 806 50.318983 39.107147
14 5 1 800 50.318983 39.107147
15 5 1 890 50.318983 39.107147
16 6 1 890 49.328829 39.107147
17 6 1 880 49.328829 39.107147
18 6 1 800 49.328829 39.107147
19 7 1 804 1.414214 39.107147
20 7 1 806 1.414214 39.107147
21 8 1 801 NaN 39.107147
22 9 1 800 70.710678 39.107147
23 9 1 900 70.710678 39.107147
24 10 1 770 21.733231 39.107147
25 10 1 803 21.733231 39.107147
26 10 1 811 21.733231 39.107147

关于python - 在 Pandas 中分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47168675/

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