首页 > 解决方案 > 如何根据现有列值在 Python 中创建分类列?

问题描述

我是 python 新手,有什么简单的方法可以根据 python 中的现有值创建分类值吗?

city lapse
a    0
b    1
a    1
a    0
b    0
b    1

我要创建的列是基于平均失效列的城市分类

city avg_lapse city_class
a    0.3       < .5
b    0.6       > .5

并根据该计算创建一个新列

city lapse city_class
a    0     < .5
b    1     > .5
a    1     < .5
a    0     < .5
b    0     > .5
b    1     > .5

目前,我正在将干净的数据导出到 csv,计算 excel 中的类别,然后将其上传到 python 环境,知道如何创建这个的自动化版本吗?

标签: pythonpandasdataframejupyter-notebookgoogle-colaboratory

解决方案


用于GroupBy.transform重复聚合值,因此可以通过以下方式创建新列numpy.where

mean = df.groupby('city')['lapse'].transform('mean')
df['city_class'] = np.where(mean > 0.5, '> .5', '<= .5')
print (df)
  city  lapse  city_class
0    a      0       <= .5
1    b      1       >  .5
2    a      1       <= .5
3    a      0       <= .5
4    b      0       >  .5
5    b      1       >  .5

推荐阅读