我有一个包含2列的数据框:'age'和'name' . 看起来像这样(在记事本中打开时):
,age,name
0,18,Bill
1,22,Harry
2,Nan,Bill
4,5,William
(第一列是索引)
我需要在age列中删除Nan的所有行,并删除name列中具有相同名称的所有行 . 例如,在我的数据框的片段中,我想要删除带有Bill的两行,因为其中一个年龄包含Nan
目前我有这个:
df_no_dups = dp[dp.isfinite(dp['age'])]
这是第一部分,但我坚持要删除与包含Nan的行同名的其他行
任何帮助都会很棒
3 回答
按boolean indexing过滤,使用transform创建的布尔掩码进行测试,如果每组的all值没有缺失值:
或检查缺失值,测试每组至少一个
True
和最后一个反转布尔掩码~
:Detail :
试试这个,
说明:
首先删除重复项并传递
keep=False
以删除所有重复项 . 然后过滤NaN .输出:
这对我有用:
编辑:这适用于空值,如果Nan是@Mohamed所指向的字符串,则使用他提供的答案 .