将符合条件的数据帧行保持在按组分组的同一数据帧的每个组中

时间:2015-01-13 15:20:06

标签: python pandas

我有以下数据框。

    c1  c2  v1  v2
0   a   a   1   2
1   a   a   2   3
2   b   a   3   1
3   b   a   4   5
5   c   d   5   0

我希望得到以下输出。

    c1  c2  v1  v2
0   a   a   2   3
1   b   a   4   5
2   c   d   5   0

规则。第一组数据帧由c1,c2组成。然后进入每个组,在第v2列中保留具有最大值的行。 最后,输出原始数据帧,其中所有行都不满足先前删除的规则。

获得此结果的更好方法是什么?感谢。

四处走动,我也找到了this solution based on apply method

1 个答案:

答案 0 :(得分:1)

您可以使用groupby-transform to generate a boolean selection mask

grouped = df.groupby(['c1', 'c2'])
mask = grouped['v2'].transform(lambda x: x == x.max()).astype(bool)
df.loc[mask].reset_index(drop=True)

产量

  c1 c2  v1  v2
0  a  a   2   3
1  b  a   4   5
2  c  d   5   0