我有这样的数据集:
GroupID ItemType Value
A DOG GREEN
A CAT GREEN
A BIRD BLUE
B DOG ORANGE
B CAT BLUE
B BIRD GREEN
我想要做的是GroupID是相同的,比较两个ItemTypes的Value by。例如,如果DOG和CAT的值相同,则将DOG的值替换为NULL。如果DOG和CAT的值不相同,则不执行任何操作。
答案 0 :(得分:0)
我想使用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