使用base::cut (R)/pandas.cut (Python)?
df <- data.frame(age = 0:20)
labels = sprintf("from %s yrs old", c("0~9","10~15","16~20")
df$groups <- cut(
df$age,
breaks=c(0,9,15,20),
include.lowest = T,
labels = labels)
)
df$groups
# [1] from 0~9 yrs old from 0~9 yrs old from 0~9 yrs old from 0~9 yrs old from 0~9 yrs old from 0~9 yrs old
# [7] from 0~9 yrs old from 0~9 yrs old from 0~9 yrs old from 0~9 yrs old from 10~15 yrs old from 10~15 yrs old
# [13] from 10~15 yrs old from 10~15 yrs old from 10~15 yrs old from 10~15 yrs old from 16~20 yrs old from 16~20 yrs old
# [19] from 16~20 yrs old from 16~20 yrs old from 16~20 yrs old
# Levels: from 0~9 yrs old from 10~15 yrs old from 16~20 yrs old
和
import pandas as pd
df = pd.DataFrame({'age':range(20)})
labels = ['from %s yrs old' % x for x in ['0~9','10~15','16~20']]
df.groups = pd.cut(
df.age,
bins = [0,9,15,20],
include_lowest=True, labels = labels)
df.groups
#0 from 0~9 yrs old
#1 from 0~9 yrs old
#2 from 0~9 yrs old
#3 from 0~9 yrs old
#4 from 0~9 yrs old
#5 from 0~9 yrs old
#6 from 0~9 yrs old
#7 from 0~9 yrs old
#8 from 0~9 yrs old
#9 from 0~9 yrs old
#10 from 10~15 yrs old
#11 from 10~15 yrs old
#12 from 10~15 yrs old
#13 from 10~15 yrs old
#14 from 10~15 yrs old
#15 from 10~15 yrs old
#16 from 16~20 yrs old
#17 from 16~20 yrs old
#18 from 16~20 yrs old
#19 from 16~20 yrs old
#Name: age, dtype: category
#Categories (3, object): [from 0~9 yrs old < from 10~15 yrs old < from 16~20 yrs old]