python - 在 Pandas 中删除具有重复列的选定行
问题描述
假设我有一个这样的数据框:
fname lname email
Joe Aaron
Joe Aaron some@some.com
Bill Smith
Bill Smith
Bill Smith some2@some.com
是否有一种简洁方便的方法来删除 {fname, lname} 重复且电子邮件为空白的行?
解决方案
您应该首先检查您的“空”数据是NaN
空字符串还是空字符串。如果它们是混合的,您可能需要修改以下逻辑。
如果空行是 NaN
使用pd.DataFrame.sort_values
和pd.DataFrame.drop_duplicates
:
df = df.sort_values('email')\
.drop_duplicates(['fname', 'lname'])
如果空行是字符串
如果您的空行是字符串,则需要ascending=False
在排序时指定:
df = df.sort_values('email', ascending=False)\
.drop_duplicates(['fname', 'lname'])
结果
print(df)
fname lname email
4 Bill Smith some2@some.com
1 Joe Aaron some@some.com
推荐阅读
- mysql - 我正在尝试查找具有空值作为外键但所有列均不返回行的行
- java - 打开 JPA。无法从托管实体加载数据
- javascript - momentjs 日期差返回错误
- ngfor - *ngFor 在模态中不起作用(角度 10 离子 5)
- mongodb - 如何将查询的mongodb原始输出与一些新字段结合起来?
- c++ - 我可以在 CLion/Xcode 中调试我的 Kotlin 代码吗?
- python - Python Pandas 仅从 2 个 DataFrame 中选择第一个匹配项
- pascal - 有一个无效的浮点运算,但在哪里?
- rust - 如何阻止子进程的标准输入并忽略其标准输出?
- php - 将多个参数传递给 cmd