我有一个数据框
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
我想生产
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
即分组依据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)
还有更好的办法吗?
Use duplicated http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.duplicated.html仅 - 默认情况下它验证所有列:
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
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)