Python-根据列的最大值删除重复项
我对熊猫不是很好,我认为熊猫应该解决我的问题: 我有一个文本文件,其中包含数据(Python-根据列的最大值删除重复项,python,sorting,pandas,group-by,max,Python,Sorting,Pandas,Group By,Max,我对熊猫不是很好,我认为熊猫应该解决我的问题: 我有一个文本文件,其中包含数据(id1;id2;value1;value2;value3) 因此,我希望保留具有相等的id1、id2、value1和更高的value3的行值2不重要,但需要保留,例如 1;2;30;42;26.2; 3;5;12;33;11.2; 24;12;1;23;1.9; 您需要使用value3的最大值索引,然后通过以下方式选择DataFrame: 另一种可能的解决方案是通过列value3,然后通过以下方式groupby:
id1
;id2
;value1
;value2
;value3
)
因此,我希望保留具有相等的id1
、id2
、value1
和更高的value3
的行<代码>值2不重要,但需要保留,例如
1;2;30;42;26.2;
3;5;12;33;11.2;
24;12;1;23;1.9;
您需要使用value3
的最大值索引,然后通过以下方式选择DataFrame
:
另一种可能的解决方案是通过列value3
,然后通过以下方式groupby
:
1;2;30;42;26.2;
3;5;12;33;11.2;
24;12;1;23;1.9;
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
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