2016-05-21 214 views
1

的特定列值这里使用的例子Drop all duplicate rows in Python Pandas大熊猫更改重复行

可以说,我不想放弃重复的,但改变的子集的一列中的数据的价值。因此,根据示例,如果我们使用subset = ['A','C']来标识重复项,那么我想将行1列'A'从foo更改为foo1。

我有这样做的复杂方式,但必须有一个更简单的方法,利用矢量化/内置功能。

原DF:

A B C 
0 foo 0 A 
1 foo 1 A 
2 foo 1 B 
3 bar 1 A 

期望DF:

A B C 
0 foo 0 A 
1 foo1 1 A 
2 foo 1 B 
3 bar 1 A 

回答

2

你可以使用cumcount,并完成类似

>>> c = df.groupby(["A","C"]).cumcount() 
>>> c = c.replace(0, '').astype(str) 
>>> df["A"] += c 
>>> df 
     A B C 
0 foo 0 A 
1 foo1 1 A 
2 foo 1 B 
3 bar 1 A 

这工作becau se cumcount给我们

>>> df.groupby(["A","C"]).cumcount() 
0 0 
1 1 
2 0 
3 0 
dtype: int64 
+0

令人惊叹。很棒。谢谢!! – codingknob