col*_*ang 2 python dataframe pandas
我有一个数据框
   x  c
0  0  1
1  3  2
2  1  1
3  2  1
4  3  1
5  4  1
6  1  0
7  3  1
8  2  1
9  1  2
Run Code Online (Sandbox Code Playgroud)
我想生产
   c  x duplicated
0  1  0      False
1  2  3      False
2  1  1      False
3  1  2       True
4  1  3       True
5  1  4      False
6  0  1      False
7  1  3       True
8  1  2       True
9  2  1      False
Run Code Online (Sandbox Code Playgroud)
即先分组c,并标记组中所有重复的行。
我目前的做法是
c = np.random.randint(0, 3, 10)
x = np.random.randint(0, 5, 10)
d = pd.DataFrame({'x': x, 'c': c})
d['duplicated'] = d.groupby('c').apply(
    lambda x: x.duplicated(keep=False)
).reset_index(level=0, drop=True)
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
duplicated仅使用- 默认情况下,它验证所有列:
d['duplicated'] = d.duplicated(keep=False)
print (d)
   x  c  duplicated
0  0  1       False
1  3  2       False
2  1  1       False
3  2  1        True
4  3  1        True
5  4  1       False
6  1  0       False
7  3  1        True
8  2  1        True
9  1  2       False
Run Code Online (Sandbox Code Playgroud)
d['duplicated'] = d.duplicated(subset=['c','x'],keep=False)
print (d)
   x  c  duplicated
0  0  1       False
1  3  2       False
2  1  1       False
3  2  1        True
4  3  1        True
5  4  1       False
6  1  0       False
7  3  1        True
8  2  1        True
9  1  2       False
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3897 次  |  
        
|   最近记录:  |