pandas 识别并取出重复项

碰见一个七千多万行的数据,结构是这样的

id a b c d
2333 2 3 4 5
233 3 3 4 5
12333 1 3 3 5
12333 1 3 4 5

第1列是标识,a,b,c,d是记录的数值,标识里面会有重复的,目的是想要找到唯一id,并且后面数值加起来最大的那一行。

  • 开始直接做了df['id'].value_counts().index,然后遍历里面id,再匹配出来id为这个值的所有行,挑出后面值加起来最大的那个。但这个数据太大了,跑起来又慢。

  • 想到了groupby,但是这个groupby是聚合函数,带不出后面原始数据

  • 再转换想法,那就去重好了,保留值最大的那一行就可以了,果然快了

df['_num'] = df.iloc[:, 1:].sum(axis=1)
df_ = df.sort_values('_num', ascending=False).drop_duplicates(subset=['id'], keep='first')

就酱

你可能感兴趣的:(#,Python,pandas,数据库)