2017-09-15 63 views
0

内比较两行我有一个数据集是这样的:Python的数据帧 - 一组

GroupID ItemType Value 
    A  DOG  GREEN 
    A  CAT  GREEN 
    A  BIRD  BLUE 
    B  DOG  ORANGE 
    B  CAT  BLUE 
    B  BIRD  GREEN 

我想什么做的就是群ID是一样的,通过比较两个ItemTypes价值。例如,如果DOG和CAT的值相同,则将DOG的值替换为NULL。如果DOG和CAT的价值不一样,什么都不要做。

回答

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