我需要查看列['b']中的所有行,如果该行不是空的,请转到另一个相应的列['c']并删除此特定的重复项索引针对第三列['c']中的所有其他行,同时保留此特定索引。我遇到了drop_duplicates,但是我无法找到一种方法来查找突出显示的行的重复项,而不是列中的所有重复项。我不能在整个列上使用drop_duplicates,因为我想在此列中保留可能对应于列['b']中的空值的重复项。如果在['b']中找到非空值,则可以转到['c']中的当前索引并找到该索引的所有重复项并将其删除。这些重复项可以对应['b']中的空或非空值。如果在['b']中找到空值,则跳至下一个索引。通过这种方式,可能会间接移除['b']中的空值索引,因为它们是['c']中与非空[[b']值对应的索引的重复项。python pandas如何有选择地删除重复项
编辑样本数据:
预处理的:
df1 = pd.DataFrame([['','CCCH'], ['CHC','CCCH'], ['CCHCC','CNHCC'], ['','CCCH'], ['CNHCC','CNOCH'], ['','NCH'], ['','NCH']], columns=['B', 'C'])
df1
B C
0 CCCH
1 CHC CCCH
2 CCHCC CNHCC
3 CCCH
4 CNHCC CNOCH
5 NCH
6 NCH
后处理和删除正确的重复:
df2 = pd.DataFrame([['CHC','CCCH'], ['CCHCC','CNHCC'], ['CNHCC','CNOCH'], ['','NCH'], ['','NCH']], columns=['B', 'C'])
df2
B C
1 CHC CCCH
2 CCHCC CNHCC
4 CNHCC CNOCH
5 NCH
6 NCH
上面我们看到的结果是删掉了唯一的行是行0, 3,因为它们在行1的列['C']中具有非零“B”值的副本。尽管第5,6行在列['C']中彼此重复,因为它们没有非零的'B'值。行2和行4保留,因为它们不是列['C']中的重复项。
所以逻辑将是通过'B'列中的每一行,如果它是空的,然后向下移动并继续。如果它不是空的,则转到相应的列'C'并删除该列'C'行的所有副本,同时保留该索引,然后继续到下一行,直到此逻辑已应用于'B'列中的所有值”。
B列值为空 - >看看列B中的下一个值
|或者如果不是空的|
B列不为空 - > C栏 - >删除C列的该索引的所有副本,同时保持当前索引 - >查找在B列下一个值
能否请您提供一些数据样本? (http://stackoverflow.com/help/mcve) – Thanos
And:[如何制作好重现熊猫的例子](http:// stackoverflow。问题/ 20109391 /如何制作好可重现的熊猫示例) – IanS
用数据示例编辑 – lucas305