[英]Pandas:drop_duplicates() based on condition in python
低于数据集:
data_input:
A B
1 C13D C07H
2 C07H C13D
3 B42C B65H
4 B65H B42C
5 A45B A47C
即data_input
中的第1行和第2行是相同的,我只想保留一个,所以删除第2行。
想要输出如下:
data_output:
A B
1 C13D C07H
2 B42C B65H
3 A45B A47C
您可以根据'A'
和'B'
创建第三列'C'
,并使用它来查找重复项:
df['C'] = df['A'] + df['B']
df['C'] = df['C'].apply(lambda x: ''.join(sorted(x)))
df = df.drop_duplicates(subset='C')[['A', 'B']]
您可以使用duplicated
和np.sort
In [1279]: df[~df.apply(np.sort, axis=1).duplicated()]
Out[1279]:
A B
1 C13D C07H
3 B42C B65H
5 A45B A47C
细节
In [1281]: df.apply(np.sort, axis=1)
Out[1281]:
A B
1 C07H C13D
2 C07H C13D
3 B42C B65H
4 B42C B65H
5 A45B A47C
In [1282]: df.apply(np.sort, axis=1).duplicated()
Out[1282]:
1 False
2 True
3 False
4 True
5 False
dtype: bool
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.