我在熊猫数据框下方
Name | Value1 | Value2
User 1 | 1 | 15
User 1 | 2 | 35
User 1 | 3 | 35
User 1 | 3 | 35
User 2 | 4 | 23
User 2 | 5 | 25
User 3 | 6 | 45
User 3 | 7 | 50
我想使用pandas数据框仅选择 Value2 列中值最大的行
赞:
Name | Value1 | Value2
User 1 | 2 | 35
User 1 | 3 | 35
User 1 | 3 | 35
User 2 | 5 | 25
User 3 | 7 | 50
带有说明代码将对我有更多帮助,因为熊猫对我来说是新的。
先谢谢了:)
答案 0 :(得分:1)
将GroupBy.transform
与max
一起用于每个组的最大值填充的系列,将Value2
与Series.eq
进行比较,并按boolean indexing
进行过滤:
df1 = df[df.groupby('Name')['Value2'].transform('max').eq(df['Value2'])]
print (df1)
Name Value1 Value2
1 User 1 2 35
2 User 1 3 35
3 User 1 3 35
5 User 2 5 25
7 User 3 7 50
详细信息:
print (df.groupby('Name')['Value2'].transform('max'))
0 35
1 35
2 35
3 35
4 25
5 25
6 50
7 50
Name: Value2, dtype: int64
print (df.groupby('Name')['Value2'].transform('max').eq(df['Value2']))
0 False
1 True
2 True
3 True
4 False
5 True
6 False
7 True
Name: Value2, dtype: bool