我有一个形状为(7985, 3048)
的数据框,其格式如下:
image_name col1_ID col2_ID col3_ID ... colN_ID # header
rdr_001_101 0.00342 0.00015 0.10094 ... 0.34210 # prob. distrib
rdr_001_133 0.00432 0.00025 0.01465 ... 0.22108 # prob. distrib
...
...
rdr_003_167 0.07543 0.00576 0.07523 ... 0.73421 # prob. distrib
现在,对于每个图像,我只想从这3047个值中选择100列及其对应的索引。应该根据列中的值选择100列(即,选择具有最大值的列,直到计数达到100)。
约束:列的顺序很重要。
我有一个基于循环的解决方案(使用df.iterrows),但是它非常慢,而且似乎通常不建议这样做。此外,这是一个简单的示例,而我的实际数据框可能会有更多的行。
还有什么可能的(更快的)替代方法?
样本输入,只有五列:
image_name col1_ID col2_ID col3_ID col4_ID col5_ID
rdr_001_101 0.00342 0.00015 0.10094 0.34210 0.27651
rdr_001_133 0.43211 0.00025 0.01465 0.22108 0.00123
rdr_003_167 0.07543 0.25761 0.07523 0.01148 0.00341
预期输出,三列:
col3_ID col4_ID col5_ID
col1_ID col3_ID col4_ID
col1_ID col2_ID col3_ID
IIUC如果要排序的列名称使用numpy.argsort
:
numpy.argsort