假设我有一个UNDERDERED数据框:
df = pandas.DataFrame({'A': [6, 2, 3, 5]})
我有一个输入内容:
input = 3
我想在列表中找到我输入的排名。在这里:
expected_rank_in_df(input) = 2
# Because 2 < 3 < 5 < 6
假设:输入始终包含在数据框中。因此,例如,我在此df中找不到“ 4”的位置。
第一个想法是像这样使用Pandas rank by column value:
df.rank()
但是对我来说似乎有点矫kill过正,因为我不需要对整个专栏进行排名。也许不是吗?
答案 0 :(得分:1)
如果您确定输入是在列中,则排名将等于
df[df > input].count()
这有意义吗?如果您打算多次调用它,那么对列进行排序可能是值得的。但是,如果您只关心一些输入,则这可能会更快。
答案 1 :(得分:0)
对于True
,您可以使用布尔掩码获得numpy.where
匹配值的第一位置:
a = 3
print (np.where(np.sort(df['A']) == a)[0][0] + 1)
2
如果是默认的RangeIndex:
a = 3
print (df['A'].sort_values().eq(3).idxmax())
2
另一个想法是通过True
对sum
个值进行计数:
print (df['A'].gt(3).sum())
2