将满足条件的数据帧行保留到按以下分组的同一数据帧的每组中
keep dataframe rows meeting a condition into each group of the same dataframe grouped by
我有以下数据框。
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 中。
最后输出原始dataframe,将所有不满足之前规则的行丢弃。
获得此结果的更好方法是什么?谢谢
转了一圈,我也发现了this solution based on apply method
您可以使用 :
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
我有以下数据框。
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 中。 最后输出原始dataframe,将所有不满足之前规则的行丢弃。
获得此结果的更好方法是什么?谢谢
转了一圈,我也发现了this solution based on apply method
您可以使用
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