我想为我的数据创建某种形式的汇总,
A B
------
10 2
20 4
5 6
5 8
9 14
我想通过将 B 列中的值量化为5组来对这些行进行分组,因此,如果 B 列中的某些值落入范围 1-5 ,则该行将属于该组。在此示例中,行 1 和 2 属于组 1-5 ,而 3 和 4 属于 6-10 组。然后,每个组将仅包含行 A 的一行。所以我们最终会结束,
A B
------
15 1-5
5 6-10
9 11-15
如何在不重复每一行的情况下用熊猫来做到这一点?
答案 0 :(得分:1)
将cut
与arange
一起用于具有列表理解标签的容器,然后汇总mean
:
bins = np.arange(0, 16, 5)
labels = [f'{i+1}-{j}' for i, j in zip(bins[:-1], bins[1:])]
binned = pd.cut(df['B'], bins=bins, labels=labels)
df1 = df.groupby(binned)['A'].mean().reset_index()[['A','B']]
print (df1)
A B
0 15 1-5
1 5 6-10
2 9 11-15