将groupby结果插入到每个实例的新列ONCE中

时间:2016-12-29 16:58:21

标签: python pandas merge transformation

DataFrame如此:

new
Color  Value
0   Red    100
1   Red    150
2  Blue     50

我将重复次数插入到新系列中:

new['Repeats'] = new.groupby(['Color'])[new.columns[-1]].transform('count')

结果是:

Color  Value  Repeats
0   Red    100        2
1   Red    150        2
2  Blue     50        1

有没有办法获得相同的结果,但只有'重复'每个实例输入一次,如:

Color  Value  Repeats
0   Red    100        2
1   Red    150        
2  Blue     50        1

对我而言似乎很愚蠢,但客户要求这样做。

提前感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

执行transform后,使用locduplicated将重复项设为空字符串:

new.loc[new['Color'].duplicated(), 'Repeats'] = ''

结果输出:

  Color  Value Repeats
0   Red    100       2
1   Red    150        
2  Blue     50       1

请注意,您也可以将重复项指定为np.nan,但您需要先将'Repeats'列转换为字符串dtype,否则计数将成为浮点数。