Skip to main content
 首页 » 编程设计

python之在两列中查找具有重复数据的行,只保留第三列中值最低的行

2025年05月04日13Terrylee

我有一个包含三列的数据框。我想找到携带相同信息的行(无论列中出现的顺序如何)。我想删除所有包含冗余信息的行,但保留第三列中具有最低值的行:

import pandas as pd 
pd.DataFrame({"Dependend variable": ["A", "B", "C"], "Independend variable": ["B", "A", "D"], "pvalue": [0.001, 0.005, 0.001]}) 
 
Out[1]:  
  Dependend variable Independend variable  pvalue 
0                  A                    B   0.001 
1                  B                    A   0.005 
2                  C                    D   0.001 

什么是获取此 dataFrame 的好 pythonic 方法

Out[]:  
  Dependend variable Independend variable  pvalue 
0                  A                    B   0.001 
1                  C                    D   0.001 

请您参考如下方法:

我认为您可以按 numpy.sort 对两列进行排序然后 sort_values与 drop_duplicates对于最小值:

sort1 = np.sort(df[['Dependend variable','Independend variable']], axis=1) 
df[['a','b']] = pd.DataFrame(sort1, index=df.index) 
print (df) 
  Dependend variable Independend variable  pvalue  a  b 
0                  A                    B   0.001  A  B 
1                  B                    A   0.005  A  B 
2                  C                    D   0.001  C  D 
 
df = df.sort_values(['a','b','pvalue']).drop_duplicates(['a','b']).drop(['a','b'],1) 
print (df) 
  Dependend variable Independend variable  pvalue 
0                  A                    B   0.001 
2                  C                    D   0.001