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

时间:2017-09-15 21:10:05

标签: python-2.7 pandas

我有这样的数据集:

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的值不相同,则不执行任何操作。

1 个答案:

答案 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