这是我的数据
Id feature1 feature2 feature3 feature4 feature5 feature6
1 4 5 7 7 4 5
2 5 6 8 8 5 5
我想要的是删除重复数据
Id feature1 feature2 feature3 feature6
1 4 5 7 5
2 5 6 8 5
如果还要描述重复,那就更好了
feature3 is same with feature4
feature2 is same with feature5
通常,我使用seaboarn corplot,但是当功能增长超过100时,我会感到困惑
import seaborn as sns
ax = sns.heatmap(df)
答案 0 :(得分:1)
您可以使用df.T
转置数据框,使用drop_duplicates
,然后再次转置数据框:
In [6]: df.T.drop_duplicates().T
Out[6]:
Id feature1 feature2 feature3 feature6
0 1 4 5 7 5
1 2 5 6 8 5
答案 1 :(得分:1)
您可以使用T
然后groupby
值,注意drop_duplicates
和duplicated
,不会提供对,这意味着他们只会回复重复的值(不重复)基)
s=df.T.reset_index().groupby([0,1])['index'].apply(tuple)
s[s.str.len()>=2].apply(lambda x : '{0[0]} is same with {0[1]}'.format(x))
Out[797]:
0 1
4 5 feature1 is same with feature5
7 8 feature3 is same with feature4
Name: index, dtype: object
答案 2 :(得分:0)
使用 drop_duplicates()方法的可能解决方案。但是,它会查找行,因此您应将其应用于转置的数据帧,然后再次转置结果。例如:
data = [
[4, 5, 7, 7, 4, 5],
[5, 6, 8, 8, 5, 5],
]
columns=['feature1', 'feature2', 'feature3', 'feature4', 'feature5', 'feature6']
df = pd.DataFrame(data, columns)
df.T.drop_duplicates().T
为了显示哪些功能重复,您可以使用重复()方法
df.T.duplicated().T
将显示:
feature1 False
feature2 False
feature3 False
feature4 True
feature5 True
feature6 False
dtype: bool