我有一个pandas数据帧,我想为它计算装箱平均值。为了对我的数据进行分类,我正在寻找一个可以指定分类大小的解决方案(可能是在线(,而不是使用分类的数量。例如,来自此数据的示例:
A B
0.1 4.2
0.15 2.0
0.17 3.0
0.2 6.4
0.3 1.0
0.35 5.0
0.4 10.0
0.43 2.0
0.5 8.0
我想为列A指定bin_size=0.1
,获取以下数据帧作为我的装箱平均值:
A B
(0.1,0.2) 0.14 3.06
(0.3,0.4) 0.35 5.33
(0.4,0.5) 0.44 6.66
如果我要指定垃圾箱的数量,我会通过以下方式解决:
groups = df.groupby(pd.cut(df.A, bins))
df2 = pd.DataFrame(groups.mean())
但,正如我所说,我正在寻找一个解决方案,在其中我指定了垃圾箱的大小。也许需要强调的是,我的数据集有33961行。
您可以使用由0.1 相等分隔的numpy数组来定义bins
ranges = np.arange(df.A.min() - 0.1, df.A.max() + 0.1, 0.1) #[0, 0.1, 0.2, 0.3 ...]
groups = df.groupby(pd.cut(df.A, ranges))
groups.mean()
# A B
# A
# (0.0, 0.1] 0.100000 4.2
# (0.1, 0.2] 0.173333 3.8
# (0.2, 0.3] 0.300000 1.0
# (0.3, 0.4] 0.375000 7.5
# (0.4, 0.5] 0.465000 5.0