如何在python中查找数据帧列中整数范围内的值的数目
所以我有一个大数据框,里面有很多列,比如年龄、姓名、性别等等 我想制作一个新专栏,介绍年龄在1-10岁、11-20岁、21-30岁、71-80岁之间的人 我试着去做如何在python中查找数据帧列中整数范围内的值的数目,python,pandas,numpy,Python,Pandas,Numpy,所以我有一个大数据框,里面有很多列,比如年龄、姓名、性别等等 我想制作一个新专栏,介绍年龄在1-10岁、11-20岁、21-30岁、71-80岁之间的人 我试着去做 ranges = [1, 10, 20, 30, 40, 50, 60, 70, 80] df.age.groupby(pd.cut(df.age, ranges)).count() 结果是 age (1, 10] 64 (10, 20] 162 (20, 30] 361 (30, 40] 210 (4
ranges = [1, 10, 20, 30, 40, 50, 60, 70, 80]
df.age.groupby(pd.cut(df.age, ranges)).count()
结果是
age
(1, 10] 64
(10, 20] 162
(20, 30] 361
(30, 40] 210
(40, 50] 132
(50, 60] 62
(60, 70] 27
(70, 80] 6
Name: age, dtype: int64
这正是我想要的,但小组是不正确的。我希望是1-10然后是11-20,而不是1-10和10-20。有人能帮我解决这个问题吗?我想首先有必要用@samthegolden的评论来解释一下: (10,20)由于括号格式,表示“介于10和20之间,不包括10和包括20” 但您可以通过在列表理解中使用
zip
创建labels
参数ranges
来实现:
np.random.seed(2020)
df = pd.DataFrame({'age':np.random.randint(1, 80, size=100)})
ranges = [1, 10, 20, 30, 40, 50, 60, 70, 80]
labels = ['{}-{}'.format(i + 1, j) for i, j in zip(ranges[:-1], ranges[1:])]
labels[0] = '{}-{}'.format(ranges[0], ranges[1])
print (labels)
['1-10', '11-20', '21-30', '31-40', '41-50', '51-60', '61-70', '71-80']
ranges = [1, 10, 20, 30, 40, 50, 60, 70, 80]
s = df.age.groupby(pd.cut(df.age, ranges, labels=labels)).count()
print (s)
age
1-10 14
11-20 10
21-30 15
31-40 12
41-50 7
51-60 11
61-70 18
71-80 12
Name: age, dtype: int64
(10,20)
由于括号格式的原因,表示“介于10和20之间,不包括10,包括20”。标签=[f'{x+1}-{y}'如果x!=1,否则f'{x}-{y}'表示zip中的x,y(范围,范围[1:])
-将其传递给pd.cut的labels参数。如果我的答案有用,请不要忘记。谢谢。