![](/img/trans.png)
[英]Filter pandas dataframe based on a column: keep all rows if a value is that column
[英]Filter grouped pandas dataframe, keep all rows with minimum value in column
df = pd.DataFrame([['SAM', 23, 1],
['SAM', 23, 2],
['SAM', 23, 1],
['SAM', 23, 3],
['BILL', 36, 1],
['BILL', 36, 2],
['BILL', 36, 3],
['BILL', 36, 1],
['JIMMY', 33, 4],
['JIMMY', 33, 2],
['JIMMY', 33, 2],
['JIMMY', 33, 3],
['CARTER', 25, 3],
['CARTER', 25, 4],
['CARTER', 25, 5],
['CARTER', 25, 4],
['GRACE', 27, 4],
['GRACE', 27, 5],
['GRACE', 27, 6],
['TOMMY', 32, 7]])
df.columns = ['A', 'B', 'C']
我需要在数据框中保留所有行,其最小值由 'A' 列分组,并保持 B 相同。 这里有几乎相同的主题,但如果我使用
df.loc[df.groupby('A').C.idxmin()]
只剩下最少的一排,我需要所有这些。 预期结果:
让我们尝试使用groupby.transform
来获取每组 C 的最小值,并与df['C']
进行比较并保持那些等于最小值的C
值:
df.loc[df.groupby('A')['C'].transform('min').eq(df['C'])].reset_index(drop=True)
A B C
0 SAM 23 1
1 SAM 23 1
2 BILL 36 1
3 BILL 36 1
4 JIMMY 33 2
5 JIMMY 33 2
6 CARTER 25 3
7 GRACE 27 4
8 TOMMY 32 7
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.