pandas - 忽略 pandas 中不同行的最小值
问题描述
我低于熊猫数据框
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
我只想使用熊猫数据框选择那些在Value2列中具有最大值的行
像这样:
Name | Value1 | Value2
User 1 | 2 | 35
User 1 | 3 | 35
User 1 | 3 | 35
User 2 | 5 | 25
User 3 | 7 | 50
带有描述的代码将对我有更多帮助,因为熊猫对我来说是新的。
提前致谢 :)
解决方案
使用GroupBy.transform
withmax
用于由每个组的最大值填充的系列,按列比较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
推荐阅读
- python - imshow 的奇怪 cv2 行为
- reactjs - 如何在没有 SCSS 文件的情况下使用 SCSS 设置 div 样式对 React 组件不重要
- c# - C# Net Core:如何使用适当的实体跟踪实现域层
- java - 在 MAC OSX 中出现错误“错误:无法找到或加载主类 A 原因:java.lang.ClassNotFoundException:A”
- php - 邮寄独特的邮件(Laravel)
- html - 如何修复复选框
- laravel - Laravel 的 Vuedraggable 问题
- firebase - 如何在不访问 Deploy 命令返回的 URL 链接的情况下运行数据库触发器
- ms-word - 使用 pandoc 从 word 到 Latex ,引用问题
- python - 从单词列表中逐个字母打印