python - 如何根据现有列值在 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 环境,知道如何创建这个的自动化版本吗?
解决方案
用于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
推荐阅读
- plot - 尝试在 Julia 中使用 Vega 包绘制条形图时出现“条形图未定义”
- image - 试图将 Magick 转换为 .Bat 以进行拖放
- verilog - 在 verilog 上模拟数据时遇到问题
- c# - 我想在进度条上标记一些进度事件
- python - 我在使用烧瓶的 python 中遇到语法错误,我不知道为什么
- c++ - 输入向量
- python - False Boolean 未在 proto3 Python 中显示
- vectorization - 如何使用从训练数据创建的 Document-Term Matrix 表示测试集中的文档?(潜在语义索引)
- c++ - 字符串项目中重载运算符时出错 [已解决]
- javascript - 循环 Google 工作表 - 仅返回最后一行