2017-09-15 52 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