我想对df中有多少其他cols大于或等于参考col进行排名。给定testdf:
testdf = pd.DataFrame({'RefCol': [10, 20, 30, 40],
'Col1': [11, 19, 29, 40],
'Col2': [12, 21, 28, 39],
'Col3': [13, 22, 31, 38]
})
我正在使用助手功能:
def sorter(row):
sortedrow = row.sort_values()
return sortedrow.index.get_loc('RefCol')
为:
testdf['Score'] = testdf.apply(sorter, axis=1)
根据实际数据,此方法非常慢,如何加快速度?谢谢
答案 0 :(得分:2)
看起来您需要比较RefCol
并检查是否有少于RefCol的列,请使用:
testdf.lt(testdf['RefCol'],axis=0).sum(1)
0 0
1 1
2 2
3 2
大于等于使用:
testdf.drop('RefCol',1).ge(testdf.RefCol,axis=0).sum(1)