Python标记除一个特定重复行外的所有行

Python标记除一个特定重复行外的所有行,python,pandas,Python,Pandas,我有一个Pandas数据帧,它已经被简化为仅重复的数据帧并进行了排序。 重复项由“哈希”列标识,然后按“哈希”和“大小”排序 结果: HASH SIZE is_duplicated 1 5 TRUE 1 3 TRUE 1 2 TRUE 9 7 TRUE 9 5 TRUE 我想再添加两列。 第一列将通过ID标识具有相同“哈希”的数据行。 具有相同“哈希”的第一组行将是1,下一组将是2,以此类推 第二列将

我有一个Pandas数据帧,它已经被简化为仅重复的数据帧并进行了排序。 重复项由“哈希”列标识,然后按“哈希”和“大小”排序

结果:

HASH  SIZE  is_duplicated
1      5     TRUE
1      3     TRUE
1      2     TRUE
9      7     TRUE
9      5     TRUE
我想再添加两列。 第一列将通过ID标识具有相同“哈希”的数据行。 具有相同“哈希”的第一组行将是1,下一组将是2,以此类推

第二列将标记每个组中“大小”最大的一行


或许可以使用口述和列表理解:

import pandas as pd
df = pd.DataFrame([[1,1,1,9,9],[5,3,2,7,5]]).T
df.columns = ['HASH','SIZE']

hash_dict = dict(zip(df.HASH.unique(),range(1,df.HASH.nunique()+1)))
df['ID'] = [hash_dict[k] for k in df.HASH]

max_dict = dict(df.groupby('HASH')['SIZE'].max())
df['KEEP'] = [True if b==max_dict[a] else False for a,b in zip(df.HASH,df.SIZE)]
HASH  SIZE ID   KEEP
1      5   1    TRUE
1      3   1    FALSE
1      2   1    FALSE
9      7   2    TRUE
9      5   2    FALSE
import pandas as pd
df = pd.DataFrame([[1,1,1,9,9],[5,3,2,7,5]]).T
df.columns = ['HASH','SIZE']

hash_dict = dict(zip(df.HASH.unique(),range(1,df.HASH.nunique()+1)))
df['ID'] = [hash_dict[k] for k in df.HASH]

max_dict = dict(df.groupby('HASH')['SIZE'].max())
df['KEEP'] = [True if b==max_dict[a] else False for a,b in zip(df.HASH,df.SIZE)]