在python数据框中删除不包含列中特定字符串的多列的重复项

Posted

技术标签:

【中文标题】在python数据框中删除不包含列中特定字符串的多列的重复项【英文标题】:drop duplicates in a python dataframe for multiple columns not containing a particular string in a column 【发布时间】:2017-05-23 17:54:14 【问题描述】:

我想删除仅限于 C2 和 C3 列的重复项。但是,现在在保留重复行时,应优先考虑 C4 列中以“zx”开头的行。例如:考虑第 0 行和第 1 行(指 C1 列),行“0”保留在输出中,因为它包含“zx”但 C4 被删除。此外,当两个副本都包含相同的“zx”时,例如第 6 行和第 7 行,任何人都可以被删除。但是,当重复行(对于列 C2 和 C3)包含不同的 "zx" 时,两者都应该保留,例如: 行:8 和 9。

输入:

C1  C2   C3   C4
0   AB   Dat  zx101
1   AB   Dat  tp102
2   CD   CR   zx1032
3   CD   CR   lx1032
4   EF   KLM  2x501
5   EF   KLM  2x501
6   HI   NOP  zx707
7   HI   NOP  zx707
8   PL   TIP  zx303
9   PL   TIP  zx304

输出:

C1  C2   C3   C4
0   AB   Dat  zx101
2   CD   CR   zx1032
4   EF   KLM  2x501
6   HI   NOP  zx707
8   PL   TIP  zx303
9   PL   IPT  2x304

【问题讨论】:

显示您尝试过的内容。堆栈溢出不是编码。请发布您的代码。查看How to Ask 以及如何创建minimal reproducible example 【参考方案1】:

一种自然的方式是

首先排序您的数据,以便您想要保留的观察结果始终是每个重复组的第一个观察结果 然后使用drop_duplicates( keep = 'first')

【讨论】:

以上是关于在python数据框中删除不包含列中特定字符串的多列的重复项的主要内容,如果未能解决你的问题,请参考以下文章

从 pandas 数据框中删除句子长度超过特定字长的行

如果特定列中的值不是熊猫数据框中的整数,则删除行

从熊猫数据框中提取在特定列中具有特定值的所有行

从 pandas 数据框中的元组列中删除元素

从熊猫列中删除列表中的单词 - python 2.7

在python中操作DataFrame特定列中单个字符的方法?