Python 3.x 如何在python中创建定制的容器

Python 3.x 如何在python中创建定制的容器,python-3.x,pandas,Python 3.x,Pandas,我想使用pandas cut功能在我的数据框中为客户年龄创建箱子。我尝试使用以下代码: bins = [0,20,25, 30, 35, 40,45,50,55, 60,150] labels = ['0-20yrs', '21-25 yrs', '26-30 yrs', '31-35 yrs','36-40 yrs', '41-45 yrs', '46-50 yrs','51-55 yrs', '56-59 yrs', '> 60yrs'] df['BINS']

我想使用pandas cut功能在我的数据框中为客户年龄创建箱子。我尝试使用以下代码:

bins = [0,20,25, 30, 35, 40,45,50,55, 60,150]
labels = ['0-20yrs', '21-25 yrs', '26-30 yrs', '31-35 yrs','36-40 yrs', 
           '41-45 yrs', '46-50 yrs','51-55 yrs', '56-59 yrs', '> 60yrs']
df['BINS'] = pd.cut(df.CUSTOMER_AGE, bins, labels = labels,include_lowest = True)
这是我得到的输出:

CUSTOMER_AGE               BIN
 20                      0-20 yrs
 38                      36-40 yrs
 58                      56-59 yrs
 60                      56-59 yrs
 60                      56-59 yrs
 72                      > 60 yrs
 61                      > 60 yrs
 60                      56-59 yrs
 80                      > 60 yrs 
我想知道为什么只有60岁的客户才会被归入“56-59岁”的垃圾箱,而不是“>60岁”。
但是60岁以上的客户会被放在正确的箱子里,即60岁以上的客户。

我认为您需要
right=False
closed='right'
更改为
closed='left'

:布尔,默认值

指示箱子是否包括最右边的边缘。如果right==True(默认值),则bins[1,2,3,4]表示(1,2],(2,3],(3,4)。当bins是IntervalIndex时,此参数将被忽略

为了更好地理解,请检查:

闭区间(在数学中用方括号表示)包含其端点,即闭区间[0,5]的特征是条件0
df['BINS'] = pd.cut(df.CUSTOMER_AGE, bins, labels = labels,include_lowest = True, right=False)
print (df)
   CUSTOMER_AGE        BIN       BINS
0            20   0-20 yrs  21-25 yrs
1            38  36-40 yrs  36-40 yrs
2            58  56-59 yrs  56-59 yrs
3            60  56-59 yrs    > 60yrs
4            60  56-59 yrs    > 60yrs
5            72   > 60 yrs    > 60yrs
6            61   > 60 yrs    > 60yrs
7            60  56-59 yrs    > 60yrs
8            80   > 60 yrs    > 60yrs
df['BINS_l'] = pd.cut(df.CUSTOMER_AGE, bins, include_lowest = True, right=True)
df['BINS_r'] = pd.cut(df.CUSTOMER_AGE, bins, include_lowest = True, right=False)
print (df)
   CUSTOMER_AGE        BIN          BINS_l     BINS_r
0            20   0-20 yrs  (-0.001, 20.0]   [20, 25)
1            38  36-40 yrs    (35.0, 40.0]   [35, 40)
2            58  56-59 yrs    (55.0, 60.0]   [55, 60)
3            60  56-59 yrs    (55.0, 60.0]  [60, 150)
4            60  56-59 yrs    (55.0, 60.0]  [60, 150)
5            72   > 60 yrs   (60.0, 150.0]  [60, 150)
6            61   > 60 yrs   (60.0, 150.0]  [60, 150)
7            60  56-59 yrs    (55.0, 60.0]  [60, 150)
8            80   > 60 yrs   (60.0, 150.0]  [60, 150)