计算比groupby之后的Pandas系列中的每个值都大的值



我试图找到一种优雅的方式来返回一个系列,对于某些数据框列中的每个元素,是列总体大于/小于该元素的实例计数。例如,整个数据帧看起来像这样:

3
df = pd.DataFrame({'group': {0: 'a', 1: 'a', 2: 'a', 3: 'a', 4: 'a', 5: 'b', 6: 'b', 7: 'b', 8: 'b', 9: 'b'}, 'value': {0: 2, 1: 4, 2: 2, 3: 3, 4: 5, 5: 1, 6: 2, 7: 4, 8: 1, 9: 5}})
# You may want other methods of rank, but it's not clear from your question.
df['count_in_group'] = df.groupby('group').rank('min').sub(1)
print(df.sort_values(['group', 'value']))
...
group  value  count_in_group
0     a      2             0.0
2     a      2             0.0
3     a      3             2.0
1     a      4             3.0
4     a      5             4.0
5     b      1             0.0
8     b      1             0.0
6     b      2             2.0
7     b      4             3.0
9     b      5             4.0

相关内容

  • 没有找到相关文章

最新更新