我想得到一个来自数据帧的子集,但是我想忽略一些标签中的一些列(K-means使用分类列实现)所以我想找到一种摆脱标签的方法,只有休息我想用。 这是数据帧:
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
我只想将'Phase'和'clusterIndex'删除到要处理的新数据帧。
答案 0 :(得分: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
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 solution
与numpy.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