我有一个类似的数据集:
GroupID ItemType Value
A DOG GREEN
A CAT GREEN
A BIRD BLUE
B DOG ORANGE
B CAT BLUE
B BIRD GREEN
我想做的是groupId相同的地方,将两个项目类型的值比较。例如,如果狗和猫的价值是相同的,请用null代替狗的值。如果狗和猫的价值不一样,请什么都不做。
我想使用 pd.DataFrame.mask
,其中 Value
是重复的...但仅在每个组中由 GroupID
定义。
df.groupby('GroupID', group_keys=False).apply(
lambda d: d.assign(Value=d.Value.mask(d.duplicated('Value', 'last'))))
GroupID ItemType Value
0 A DOG NaN
1 A CAT GREEN
2 A BIRD BLUE
3 B DOG ORANGE
4 B CAT BLUE
5 B BIRD GREEN