Python 3.x 如何在python中创建定制的容器
我想使用pandas cut功能在我的数据框中为客户年龄创建箱子。我尝试使用以下代码: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']
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)