Python 如何删除具有重复值的不同列名?

Python 如何删除具有重复值的不同列名?,python,python-3.x,pandas,itertools,Python,Python 3.x,Pandas,Itertools,鉴于此DF: a b c d 1 2 1 4 4 3 4 2 foo bar foo yes 删除大型数据库中相同但名称不同的列的最佳方法是什么?例如: a b d 1 2 4 4 3 2 foo bar yes 列c已从上述数据框中删除,因为a和c具有相同的列,但名称不同。到目前为止,我试图 df = df.iloc[:, ~df.columns.duplicated()] 但是,我不清楚如何检查DF内的行值?使用转置,如下所示

鉴于此DF:

a   b   c   d
1   2   1   4
4   3   4   2
foo bar foo yes
删除大型数据库中相同但名称不同的列的最佳方法是什么?例如:

a   b   d
1   2   4
4   3   2
foo bar yes
列c已从上述数据框中删除,因为a和c具有相同的列,但名称不同。到目前为止,我试图

df = df.iloc[:, ~df.columns.duplicated()]

但是,我不清楚如何检查DF内的行值?

使用
转置
,如下所示

df.T.删除重复项()
我尝试了直截了当的方法——循环浏览列名,并将每一列与其他列进行比较。使用
np.all
进行精确匹配。这些方法只用了336ms

重复的_列=[]
对于i,枚举中的列(df.columns):
r_columns=df.columns[i+1:]
对于r_列中的r_c:
如果np.all(df[column]==df[r_c]):
重复的列。追加(r\u c)
新的_列=[x代表df.columns中的x,如果x不在重复的_列中]
df[新的_列]
它将为您提供以下输出

     a    b    d
0    1    2    4
1    4    3    2
2  foo  bar  yes

是的,这一个工作,但它是缓慢的,有没有其他更快的替代我用另一种方法编辑我的答案,它只需要336ms的11.7MB的csv文件数据。
df.loc[:,~df.T.duplicated()]
     a    b    d
0    1    2    4
1    4    3    2
2  foo  bar  yes