python - 如何在 Python 中按多列分组并根据条件创建新列?
问题描述
我有一个如下所示的数据框,我想创建一个基于列的新列
健康)状况
如果两行或多行包含 A 列和 B 列的相同值且 C 列是唯一的,则应为行分配唯一的组名
输入
A B C
Payment Mark 2
Payment Mark 3
Delayed Charles 2
Delayed Charles 4
Held Mark 3
Held Charles 4
Payment Mark 2
Payment Mark 3
Delayed Charles 4
Held Charles 4
预期产出
A B C Cluster
Payment Mark 2 C1
Payment Mark 3 C2
Delayed Charles 2 C3
Delayed Charles 4 C4
Held Mark 3 C5
Held Charles 4 C6
Payment Mark 2 C1
Payment Mark 3 C2
Delayed Charles 4 C4
Held Charles 4 C6
如何在 python 中做到这一点
解决方案
这是一个factorize
问题。
一种方法是将列加入单个系列和factorize
, add
1 和开头:add
C
df['Cluster'] = (pd.Series(df[['A','B','C']].astype(str).agg(''.join,1)
.factorize()[0]).add(1).astype(str).radd('C'))
print(df)
另一种方式将是类似的,但与groupby.ngroup
df['Cluster'] = (df.groupby(['A','B','C'],sort=False).ngroup()
.add(1).astype(str).radd('C'))
A B C Cluster
0 Payment Mark 2 C1
1 Payment Mark 3 C2
2 Delayed Charles 2 C3
3 Delayed Charles 4 C4
4 Held Mark 3 C5
5 Held Charles 4 C6
6 Payment Mark 2 C1
7 Payment Mark 3 C2
8 Delayed Charles 4 C4
9 Held Charles 4 C6
推荐阅读
- dart - 如何在 VS Code 中调试以命令行属性开头的 Dart 控制台应用程序?
- html - 侧边栏菜单的叠加
- php - 如何在大多维数组php中使用数组值作为变量
- python - Python 打字 - 为什么我可以将一个可选的 Pandas DataFrame 分配给一个非可选的 Pandas DataFrame
- sql - 计算组内加权平均值的累积分布
- c - 拆分复杂字符串的C函数
- powershell - Azure YAML 文件 powershell 脚本参数问题传递参数
- matplotlib - Seaborn 直方图
- python - RuntimeError:未找到应用程序。在视图函数中工作或推送应用程序上下文。FLASK SQLAlchemy 错误
- vue.js - 将 SASS 变量导入 Vue 组件