我将CSV文件中的数据读入Pandas Dataframe (所有单元格都是字符串类型,NaN:s已经被替换为“”),其中包含一些需要删除的重复值。
输入CSV示例:
Col1,Col2,Col3
A,rrrrr,fff
A,,ffff
B,rrr,fffff
C,,ffffff
D,rrrrrrr,ffff
C,rrrr,fffff
E,rrrrr,fff
C,,kkkkk
我需要删除那些在Col1中有重复值且Col2值为“"的行。因此,所需的结果应如下所示:
Col1,Col2,Col3
A,rrrrr,fff
B,rrr,fffff
D,rrrrrrr,ffff
C,rrrr,fffff
E,rrrrr,fff
我使用下面的代码行进行重复数据删除:
my_df = my_df.loc[(my_df["Col2"] != "") | ~my_df["Col1"].duplicated()]
这将删除Col1中具有重复项的某些行(而不是所有行)。如果这样的“重复行”出现在应保留的行(作为非空Col2)之前,则不会删除它,我的代码将给出如下结果:
Col1,Col2,Col3
A,rrrrr,fff
B,rrr,fffff
C,,ffffff
D,rrrrrrr,ffff
C,rrrr,fffff
E,rrrrr,fff
正如您所看到的,A的重复项被正确地删除了,而C的一个重复项(发生在应保留的行之前的那个重复项)保留了下来。
有什么建议吗?我可能错过了一些东西就在我的鼻子下面。
1条答案
按热度按时间hrysbysz1#
您可以计算
Col1
中每个值的计数,然后使用该computed_count
和pandas.Series.isna()
来获取所需的值。或不使用groupby:
输出量: