2 回答
![?](http://img1.sycdn.imooc.com/54585094000184e602200220-100-100.jpg)
TA贡献1854条经验 获得超8个赞
您想在 groupby 操作中执行此操作:
import numpy
import pandas
levels = ["beginner", "intermediate", "advanced", "expert"]
jobs = ["Commercial Manager", "Business Developer", "Web Marketer", "Traffic Manager"]
df = pandas.DataFrame({
'Job': numpy.random.choice(levels, size=150),
'Experience': numpy.random.uniform(0.25, 10.5, size=150)
}).assign(
level=df.groupby(['Job'])['Experience'] # for each unique job...
# apply a quantile (quartile) cut
.apply(lambda g: pd.qcut(g, q=4, labels=levels, duplicates="drop"))
)
![?](http://img1.sycdn.imooc.com/54584d6100015f5802200220-100-100.jpg)
TA贡献1803条经验 获得超3个赞
# I would just change two things to what Paul suggested (jobs instead of levels and the rank(method="first") because there was still an error:
levels = ["beginner", "intermediate", "advanced", "expert"]
jobs = ["Commercial Manager", "Business Developer", "Web Marketer", "Traffic Manager"]
df = pandas.DataFrame({
'Job': numpy.random.choice(jobs, size=150),
'Experience': numpy.random.uniform(0.25, 10.5, size=150)
}).assign(
level=df.groupby(['Job'])['Experience'] # for each unique job...
# apply a quantile (quartile) cut
.apply(lambda g: pd.qcut(g.rank(method="first"), q=4, labels=levels, duplicates="drop"))
)
添加回答
举报