Python 如何删除具有重复值的不同列名?
鉴于此DF: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内的行值?使用转置,如下所示
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