Python标记除一个特定重复行外的所有行
我有一个Pandas数据帧,它已经被简化为仅重复的数据帧并进行了排序。 重复项由“哈希”列标识,然后按“哈希”和“大小”排序 结果: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,以此类推 第二列将
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)]