python - 如果值不是基于三列组合的第一次出现,如何创建空值
问题描述
我有一个包含三列的数据框,希望仅在最后一列中保留唯一值,即基于三列组合的“CU”。
import pandas as pd
data = [['Alex','AL',10],['Bob','AB',15],['Clarke','CC',9],['Alex','Ac',11],['Bob','Ay',10],['Clarke','cv',13],['Alex','Ac',11],['Bob','Ay',13],['Clarke','cv',13]]
df = pd.DataFrame(data,columns=['Name','Cat','Cu'],dtype=float)
df
Out[460]:
Name Cat Cu
0 Alex AL 10.0
1 Bob AB 15.0
2 Clarke CC 9.0
3 Alex Ac 11.0
4 Bob Ay 10.0
5 Clarke cv 13.0
6 Alex Ac 11.0
7 Bob Ay 13.0
8 Clarke cv 13.0
对于上述数据框,如果组合不是第一次出现,则需要将 CU 列值转换为零。基本上试图同时基于三列识别唯一值需要维护所有行。
INPUT:
df
Out[460]:
Name Cat Cu
0 Alex AL 10.0
1 Bob AB 15.0
2 Clarke CC 9.0
3 Alex Ac 11.0
4 Bob Ay 10.0
5 Clarke cv 13.0
6 Alex Ac 11.0
7 Bob Ay 13.0
8 Clarke cv 13.0
OUTPUT:
Name Cat Cu
0 Alex AL 10.0
1 Bob AB 15.0
2 Clarke CC 9.0
3 Alex Ac 11.0
4 Bob Ay 10.0
5 Clarke cv 13.0
6 Alex Ac 0
7 Bob Ay 13.0
8 Clarke cv 0
解决方案
df.loc[df.groupby(['Name', 'Cat', 'Cu']).cumcount().gt(0), 'Cu'] = 0
Name Cat Cu
0 Alex AL 10.0
1 Bob AB 15.0
2 Clarke CC 9.0
3 Alex Ac 11.0
4 Bob Ay 10.0
5 Clarke cv 13.0
6 Alex Ac 0.0
7 Bob Ay 13.0
8 Clarke cv 0.0
推荐阅读
- firebase - Firestore:更好地了解获取其他文档时安全规则的工作原理
- python - 将外部函数的参数作为python中内部函数的参数传递?
- python - 是否可以在浏览器中使用 pyodide 的 wasm 构建 python 轮?
- windows - Docker 容器在 Windows 10 中的真实位置在哪里?
- c - 如何打印包含 \n 字符的字符串?
- python - 如何在超时的情况下从 GPIO 读取输入
- mysql - MySQL 中的聚合函数 GROUP_CONCAT
- c# - Renci SshNet“服务器响应不包含ssh协议标识”
- visual-studio - 如何将 Azure Analysis Services 项目从只读更改为读写?
- r - 我不知道如何使用 rgl 向 3d 图形添加标题