如何在panda中使用列值作为聚合函数的参数



给定类型的某个表

<1>
A B C
t r
r 1
n j 2
n j 2
n j 2

您可以使用groupby.cumcount和布尔索引:

out = df[df['C'].gt(df.groupby(['A', 'B']).cumcount())]

或者使用经典groupby.apply:

(df.groupby(['A', 'B'], sort=False, as_index=False, group_keys=False)
.apply(lambda g: g.head(g['C'].iloc[0]))
)

输出:

A  B  C
0  t  r  1
2  n  j  2
3  n  j  2

groupby.cumcount方法的中间体:

A  B  C  cumcount  C > cumcount
0  t  r  1         0          True
1  t  r  1         1         False
2  n  j  2         0          True
3  n  j  2         1          True
4  n  j  2         2         False

以下内容似乎有效,并且基于GroupBy.nth:

df[::-1].groupby(['A', 'B'], as_index=False).nth(df['C'])

输出:

A  B  C
3  n  j  2
2  n  j  2
0  t  r  1

相关内容

  • 没有找到相关文章

最新更新