Python数据框架 - 比较一个组中的两个行



我有一个类似的数据集:

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

最新更新