python分箱出现问题

问题遇到的现象和发生背景

使用qcut分箱出现问题

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
def industry():
    # 导入数据
    data = pd.read_csv(r'ALL.csv', encoding='gbk')
    indcd = data['Indcd'].value_counts().index
    year =  data['Accper'].value_counts().index
    data_remo = pd.DataFrame(columns=data.columns)   # 新建一个df用于储存
    for i in indcd:
        data_group = data[data['Indcd'].isin([i])].copy()   # 按行业分组
        for j in year:
            data_group = data_group[data_group['Accper'].isin([j])].copy() #按时间分组
            data_group['RDSV'], cut_bin = pd.qcut(data_group['RDS_N'], q=5, labels=['0', '1', '2', '3','4'], retbins=True, duplicates='drop')
            data_group['SEINSV'], cut_bin = pd.qcut(data_group['SEINS_N'], q=5, labels=['0', '1', '2', '3','4'], retbins=True, duplicates='drop')
            data_group['STRA'] = data_group['SEINSV'].astype(int) + data_group['RDSV'].astype(int)
            data_group = data_group.reset_index(drop=True)
            data_remo = data_remo.append(data_group, ignore_index=True)
    final_pr = ['Indcd', 'Stkcd', 'Accper', 'STRA']
    data_remo = data_remo.loc[:, final_pr]
    data_remo.set_index('Indcd', inplace=True)
    print(data_remo)
    # data_remo.to_csv(r"C:\Users\ASUS\Desktop\FINAL.csv", encoding='gbk')
    return 0
industry()
运行结果及详细报错内容
Traceback (most recent call last):
  File "C:\Users\ASUS\PycharmProjects\A01-2021-Strategy\main.py", line 89, in <module>
    industry()
  File "C:\Users\ASUS\PycharmProjects\A01-2021-Strategy\main.py", line 58, in industry
    data_group['RDSV'], cut_bin = pd.qcut(data_group['RDS_N'], 5, labels=bin_labels_1, retbins=True, duplicates='drop')
  File "D:\Anaconda\lib\site-packages\pandas\core\reshape\tile.py", line 372, in qcut
    fac, bins = _bins_to_cuts(
  File "D:\Anaconda\lib\site-packages\pandas\core\reshape\tile.py", line 446, in _bins_to_cuts
    raise ValueError(
ValueError: Bin labels must be one fewer than the number of bin edges

进程已结束,退出代码1
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
data_group['RDSV'], cut_bin = pd.qcut(data_group['RDS_N'].rank(method='first'), q=5, labels=['0', '1', '2', '3','4'], retbins=True, duplicates='drop')
data_group['SEINSV'], cut_bin = pd.qcut(data_group['SEINS_N'].rank(method='first'), q=5, labels=['0', '1', '2', '3','4'], retbins=True, duplicates='drop')

根据其他帖子,在分箱的时候我加上了.rank(method='first'),但是运行结果还是和没加之前一样
有没有一种可能,就是根据行业和年份提取出来的数据可能只有一个,数据量不足以进行分箱,所以会报错,如果是这个原因,又应该怎么处理呢?

使用的 qcut 函数在分箱时,要求标签个数比分箱个数少一个,而你传入的标签个数与分箱个数相同,所以抛出了 ValueError 异常。

修改如下

data_group['RDSV'], cut_bin = pd.qcut(data_group['RDS_N'].rank(method='first'), q=5, labels=['0', '1', '2', '3'], retbins=True, duplicates='drop')
data_group['SEINSV'], cut_bin = pd.qcut(data_group['SEINS_N'].rank(method='first'), q=5, labels=['0', '1', '2', '3'], retbins=True, duplicates='drop')