按列分列数据框,但在黑名单列中
问题描述:
我想从一个数据框中获得一个子集,但是我想忽略某些标签中的某些列(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”到一个新的数据帧进行处理。
答
您可以使用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 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
你应该在帖子中包括你所做的尝试,你当前的代码和更多的细节。如果不是,人们可能会认为你想要另一个人来解决你的整个问题 – Jalo