python - 从熊猫数据框中提取重复
问题描述
我有一张桌子:
name signature
XXX DA
XXX DB
XXX DC
YYY DA
YYY DB
YYY DC
XXX DA
XXX DE
CCC AA
CCC AB
正如你所看到的,我在表中有重复 - 名称 col 是用户的名称。签名是一个代码。我需要从此数据框中删除并将所有重复的临时数据框放入临时数据框中,但在特殊情况下。
如果在数据框中重复name
并且signature
-name
应删除所有重复的记录并将其放入另一个数据框中。
所以根据上面的数据框,new_data 应该是:
name signature
YYY DA
YYY DB
YYY DC
CCC AA
CCC AB
以及具有重复值的新数据框:
name signature
XXX DA
XXX DB
XXX DC
XXX DA
XXX DE
我能以最好的方式做什么?我在谷歌和 SO 中寻找好的建议,但没有发现任何帮助。
我只是这样做了,for loop
但问题是尺寸很大。我的数据框有 15 000 000 条记录。所以我需要做得更快。当然 pandas 或 python 有一个我没有找到的更快的方法。有人可以帮我解决这个问题吗?
解决方案
使用DataFrame.duplicated
for 获取重复的 s 并通过with for membersname
过滤原始:DataFrame
Series.isin
boolean indexing
vals = df.loc[df.duplicated(['name','signature']), 'name'].unique()
mask = df['name'].isin(vals)
df1 = df[~mask]
df2 = df[mask]
print (df1)
name signature
3 YYY DA
4 YYY DB
5 YYY DC
8 CCC AA
9 CCC AB
print (df2)
name signature
0 XXX DA
1 XXX DB
2 XXX DC
6 XXX DA
7 XXX DE
推荐阅读
- javascript - pixi.js rotateY 3d 轮播
- dojo - dojox.grid.EnhancedGrid 失去焦点
- jquery - 负边距jquery
- c# - 如何从WPF中的Gridcontrol获取所有行值
- php - 在 Laravel 中重新排序项目
- javascript - Socket.io 版本 2.1.0 错误 404
- javascript - Vue.js2 应用程序在 IE 浏览器中没有响应
- javascript - 重定向后无法访问组件中的 this.props.location
- java - java在哪里寻找netbeans中的文件?是否可以更改目录?
- bots - Telegram BOT 跟踪谁添加了用户