微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python-根据列的最大值删除重复项

如何解决Python-根据列的最大值删除重复项

您需要DataFrameGroupBy.idxmax选择的最大值为value3和的索引DataFrameloc

print (df.groupby(['id1','id2','value1']).value3.idxmax())
id1  id2  value1
1    2    30        1
3    5    12        4
24   12   1         6
Name: value3, dtype: int64

df = df.loc[df.groupby(['id1','id2','value1']).value3.idxmax()]
print (df)
   id1  id2  value1  value2  value3   a
1    1    2      30      42    26.2 NaN
4    3    5      12      33    11.2 NaN
6   24   12       1      23     1.9 NaN

另一种可能的解决方案是sort_values按列value3,然后groupby使用GroupBy.first

df = df.sort_values('value3', ascending=False)
       .groupby(['id1','id2','value1'], sort=False)
       .first()
       .reset_index()
print (df)
   id1  id2  value1  value2  value3   a
0    1    2      30      42    26.2 NaN
1    3    5      12      33    11.2 NaN
2   24   12       1      23     1.9 NaN

解决方法

我不是熊猫真的很不错,我认为应该大熊猫解决我的问题:我有一个文本文件,它包含数据(id1; id2; value1; value2;
value3

1;2;30;40;20.3;
1;2;30;42;26.2;
3;5;12;55;10.7;
3;5;12;23;8.7;
3;5;12;33;11.2;
24;12;1;553;1.1;
24;12;1;23;1.9;

其结果是,我想保持线,有平等的id1id2value1,和更高value3Value2不重要,但是需要保留,例如

1;2;30;42;26.2;
3;5;12;33;11.2;
24;12;1;23;1.9;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。