2016-11-18 18 views
0

我想从一个数据框中获得一个子集,但是我想忽略某些标签中的某些列(K-表示使用分类列实现)所以我想找到一种方法摆脱那个标签,只有我想要使用的其他标签。 下面是数据框:按列分列数据框,但在黑名单列中

  28  29  30  31  32 Phase clusterIndex 
0 0.007871 0.004631 0.000963 0.000092 0.000438  D    0 
1 0.003459 0.000730 0.000332 0.000012 0.000433  D    0 
2 0.003261 0.002412 0.000852 0.000042 0.000202  D    0 
3 0.001358 0.000313 0.000611 0.000029 0.000596  D    1 
4 0.001713 0.000203 0.000069 0.000038 0.000069  D    1 
5 0.001656 0.000041 0.000048 0.000221 0.000045  D    1 
6 0.001348 0.000023 0.000107 0.000316 0.000109  D    1 
7 0.001544 0.000194 0.000138 0.000829 0.000138  D    1 
8 0.000359 0.000469 0.000278 0.000290 0.000279  D    1 
9 0.000397 0.000351 0.000232 0.000449 0.000230  D    1 

我只是想删除“相”和“clusterIndex”到一个新的数据帧进行处理。

+0

你应该在帖子中包括你所做的尝试,你当前的代码和更多的细节。如果不是,人们可能会认为你想要另一个人来解决你的整个问题 – Jalo

回答

0

您可以使用list comprehension

blacklisted = ['Phase', 'clusterIndex'] 

cols = [col for col in df.columns if col not in blacklisted] 
print (cols) 
['28', '29', '30', '31', '32'] 

print (df[cols]) 
     28  29  30  31  32 
0 0.007871 0.004631 0.000963 0.000092 0.000438 
1 0.003459 0.000730 0.000332 0.000012 0.000433 
2 0.003261 0.002412 0.000852 0.000042 0.000202 
3 0.001358 0.000313 0.000611 0.000029 0.000596 
4 0.001713 0.000203 0.000069 0.000038 0.000069 
5 0.001656 0.000041 0.000048 0.000221 0.000045 
6 0.001348 0.000023 0.000107 0.000316 0.000109 
7 0.001544 0.000194 0.000138 0.000829 0.000138 
8 0.000359 0.000469 0.000278 0.000290 0.000279 
9 0.000397 0.000351 0.000232 0.000449 0.000230 

或者difference

blacklisted = ['Phase', 'clusterIndex'] 

cols = df.columns.difference(blacklisted) 
print (cols) 
Index(['28', '29', '30', '31', '32'], dtype='object') 

print (df[cols]) 
     28  29  30  31  32 
0 0.007871 0.004631 0.000963 0.000092 0.000438 
1 0.003459 0.000730 0.000332 0.000012 0.000433 
2 0.003261 0.002412 0.000852 0.000042 0.000202 
3 0.001358 0.000313 0.000611 0.000029 0.000596 
4 0.001713 0.000203 0.000069 0.000038 0.000069 
5 0.001656 0.000041 0.000048 0.000221 0.000045 
6 0.001348 0.000023 0.000107 0.000316 0.000109 
7 0.001544 0.000194 0.000138 0.000829 0.000138 
8 0.000359 0.000469 0.000278 0.000290 0.000279 
9 0.000397 0.000351 0.000232 0.000449 0.000230 

Numpy solutionnumpy.setdiff1d

blacklisted = ['Phase', 'clusterIndex'] 

cols = np.setdiff1d(df.columns, blacklisted) 
print (cols) 
['28' '29' '30' '31' '32'] 

print (df[cols]) 
     28  29  30  31  32 
0 0.007871 0.004631 0.000963 0.000092 0.000438 
1 0.003459 0.000730 0.000332 0.000012 0.000433 
2 0.003261 0.002412 0.000852 0.000042 0.000202 
3 0.001358 0.000313 0.000611 0.000029 0.000596 
4 0.001713 0.000203 0.000069 0.000038 0.000069 
5 0.001656 0.000041 0.000048 0.000221 0.000045 
6 0.001348 0.000023 0.000107 0.000316 0.000109 
7 0.001544 0.000194 0.000138 0.000829 0.000138 
8 0.000359 0.000469 0.000278 0.000290 0.000279 
9 0.000397 0.000351 0.000232 0.000449 0.000230 

drop列解决方案:

blacklisted = ['Phase', 'clusterIndex'] 
print (df.drop(blacklisted, axis=1)) 
     28  29  30  31  32 
0 0.007871 0.004631 0.000963 0.000092 0.000438 
1 0.003459 0.000730 0.000332 0.000012 0.000433 
2 0.003261 0.002412 0.000852 0.000042 0.000202 
3 0.001358 0.000313 0.000611 0.000029 0.000596 
4 0.001713 0.000203 0.000069 0.000038 0.000069 
5 0.001656 0.000041 0.000048 0.000221 0.000045 
6 0.001348 0.000023 0.000107 0.000316 0.000109 
7 0.001544 0.000194 0.000138 0.000829 0.000138 
8 0.000359 0.000469 0.000278 0.000290 0.000279 
9 0.000397 0.000351 0.000232 0.000449 0.000230