将行值量化为组,并计算每组的平均值

时间:2018-10-18 11:11:30

标签: python pandas dataframe

我想为我的数据创建某种形式的汇总,

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

如何在不重复每一行的情况下用熊猫来做到这一点?

1 个答案:

答案 0 :(得分:1)

cutarange一起用于具有列表理解标签的容器,然后汇总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