qcut如何处理具有非唯一bin边缘的分组数据?

时间:2017-07-31 15:13:29

标签: pandas

我正在尝试根据具有该项目数量的另一列单独为每个分组数据组分配十分位数索引。但是我显示错误“ValueError:Bin edge必须是唯一的:array([-12。,1 ...])”exception“。

我提到:Why use pandas qcut return ValueError: Bin edges must be unique?但是这个解决方案会为我的数据生成高度不均匀的二进制数(一些二进制计数差异接近1000条记录),其中一些二进制文件有0次出现。

如何解决此错误?

1 个答案:

答案 0 :(得分:0)

让我们看看这个例子:

df = pd.DataFrame({'ID':np.random.choice(list('ABC'),30),
                   'data':np.random.randint(100,500,30)})

df['Performance in Group'] = (df.groupby('ID')['data']
                                .apply(lambda x: pd.qcut(x,3,labels=['Below','Average','Above'])))

输出(头10条记录):

  ID  data Performance in Group
0  A   396                Above
1  A   255              Average
2  C   471                Above
3  C   109                Below
4  B   265              Average
5  C   404              Average
6  A   199                Below
7  C   326              Average
8  C   213                Below
9  C   225              Average