【发布时间】:2019-03-28 22:10:00
【问题描述】:
我有一个包含深度和其他值列的数据框:
data = {'Depth': [1.0, 1.0, 1.5, 2.0, 2.5, 2.5, 3.0, 3.5, 4.0, 4.0, 5.0, 5.5, 6.0],
'Value1':[44, 46, 221, 12, 47, 44, 67, 90, 100, 111, 112, 120, 122],
'Value2': [55, 65, 76, 45, 55, 58, 23, 12, 32, 20, 22, 26, 36]}
df = pd.DataFrame(data)
正如您所见,Depth 中有时会出现重复。
我希望能够以某种方式对间隔进行分组并对它们进行平均。 例如,我想要的输出是:
intervals = [1.0, 2.0]
获取区间列表并将这些区间上的数据集分解为平均每个值(Value1,Value2)得到:
Depth Value1 Value2 Avg1_1 Avg2_1 Avg1_2 Avg2_2
0 1.0 44 55 80.75 60.25 78.2 .
1 1.0 46 65 80.75 60.25 78.2 .
2 1.5 221 76 80.75 60.25 78.2 .
3 2.0 12 45 80.75 60.25 78.2
4 2.5 47 55 52.67 . 78.2
5 2.5 44 58 52.67 . 78.2
6 3.0 67 23 52.67 . 78.2
7 3.5 90 12 100.33 78.2
8 4.0 100 32 100.33 78.2
9 4.0 111 20 100.33 78.2
10 5.0 112 22 112 .
11 5.5 120 26 121 .
12 6.0 122 36 121 .
其中 Avg1_ 是 Value1 在 1.0 的每个区间内的平均值(包括 (1.0 - 2.0, 2.5 - 3.0,....等)。
有没有一种简单的方法可以在循环中使用groupby?
【问题讨论】:
-
你可以用 cut 做,但你需要向我们展示边缘,比如 1 ,2 他们都进入第一个区间,所以 [1,2] 但下一个区间变成 (2,3]?
-
对于间隔 1.0 计算,切割将在间隔 (1.0, 2.0)、(2.0, 3.0)、(3.0, 4.0)、(5.0, 6.0) 上。
-
不,在您的展示案例中,边界包含在一个区间内,例如 1&2 在同一区间内,这不是由代码创建的趋势
-
而且 1.0 和 2.0 也属于一个区间,为什么 5.0 5.5 和 6.0 不在同一个区间
-
我的错误。它将是 (1.0, 2.0], (2.5, 3.0]....等
标签: python python-3.x pandas dataframe