我有一个包含二进制数据的数据框,我知道列之间存在依赖关系。我想删除依赖列,只想保留独立列。示例输入如下:
Test ,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P
test1,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1
test2,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,1
test3,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,1
test4,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1
test5,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1
我们在此处看到,(A,B,C,G,M), (D), (E,F), (H,I,J,K,L,P) and (N, O)
是具有相同值或从属列的组。最后,我想获得以下专栏:
Test,A,D,E,H,N
test1,0,0,0,1,1
test2,1,0,1,1,0
test3,1,0,1,1,0
test4,1,1,0,1,0
test5,1,1,0,1,0
我试图在python中使用PCA但却无法实现它。有人可以指导我如何实现这个目标吗?
编辑:以下是我使用的示例代码
import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
df = pd.read_csv("TestInput.csv")
print(df)
pca = PCA()
#Remote the header and the row names
numDf = df.iloc[:,1:]
print(pca.fit(numDf))
T=pca.transform(numDf)
print("Number of unique columns are:", T.shape[1])
print(np.cumsum(pca.explained_variance_ratio_))
感谢。
答案 0 :(得分:0)
将this comment转换为答案,使用drop_duplicates
查找并删除重复列。
df = df.set_index('Test')
df.T.drop_duplicates(keep='first').T
A D E H N
Test
test1 0 0 0 1 1
test2 1 0 1 1 0
test3 1 0 1 1 0
test4 1 1 0 1 0
test5 1 1 0 1 0