pandas 取出dataframe中重复的数据(关于某字段),即去掉不重复的数据

本文介绍了一种使用Pandas库从DataFrame中提取重复项的方法。通过两次调用drop_duplicates方法,一次保留一个重复项,另一次删除所有重复项,然后利用集合操作找出重复数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

和dataframe去重不同,当需要的是那些重复数据而不是非重复数据是,就想要将重复数据提取出来时,或者去除那些非重复数据。

主要思路:

1. 采用drop_duplicates对数据去两次重,一次将重复数据全部去除(keep=False),另一次将重复数据保留一个(keep='first); 

2. 上一步我们得到了两类去重数据,分别是含有原本重复的数据(a)和不含有原本重复的数据(b),b是a的真子集,然后就可以用作差集的思想(http://blog.youkuaiyun.com/jasonwang_/article/details/78797458),即a-b,得到我们需要的原本重复的数据。

示例代码如下:

>>>import pandas as pd  
>>>data={'state':[1,1,2,2,1,2,2],'pop':['a','b','c','d','b','c','d']}
>>>frame=pd.DataFrame(data)  
>>>frame
	pop	state
0	a	1
1	b	1
2	c	2
3	d	2
4	b	1
5	c	2
6	d	2
>>>a = frame.drop_duplicates(subset=['pop'],keep='first')
>>>a
	pop	state
0	a	1
1	b	1
2	c	2
3	d	2
>>>b = frame.drop_duplicates(subset=['pop'],keep=False)
>>>b
	pop	state
0	a	1
>>>a.append(b).drop_duplicates(subset=['pop'],keep=False)
	pop	state
1	b	1
2	c	2
3	d	2
最后得到的三行数据就是重复的数据。


### 抓与处理外卖平台数据的方法 #### 数据流程 为了实现对外卖平台的数据,需遵循以下方法论: 选择目标外卖平台并分析其页面结构是一项基础工作[^1]。这一步骤涉及研究网页的HTML/CSS/JavaScript代码,识别出包含所需信息的关键字段(如餐厅名称、菜单项、价格和评价)。随后,在明确了数据源之后,可利用Python中的`requests`库发起HTTP请求来获网页内容。 编写爬虫程序时,推荐使用Scrapy框架或者BeautifulSoup库解析HTML文档,并提特定标签内的文本信息[^3]。例如,如果要收集饿了么平台上商家的基本资料,则可以从返回的JSON对象里读取出'name', 'phone' 和 'address' 字段对应的。 对于动态加载的内容,仅依靠传统的静态页面解析技术可能无法满足需求;此时可以考虑采用Selenium这样的工具模拟浏览器行为完成交互操作后再进行数据捕获。另外还需要注意的是,部分网站会设置各种形式的反爬措施以保护自己的资源被滥用,因此在实际开发过程中也需要采相应对策规避检测风险。 #### 数据清洗与存储方案 一旦成功抓到了原始数据集,下一步就是对其进行必要的预处理以便于后续统计分析之用。常见的任务包括去除重复记录、填补缺失以及标准化数单位等等。Pandas是一个非常适合做这些工作的开源软件包,它提供了丰富的函数支持高效地执行上述各类转换动作。 最后关于结果保存方式的选择上,可以根据具体应用场景灵活决定——既可以导出成CSV文件供Excel打开查看,也可以存入数据库管理系统当中构建更复杂的查询逻辑。SQLite作为轻量级关系型DBMS常常成为初学者入门首选之一[^2]。 ```python import pandas as pd # 假设df是我们已经获得的一个DataFrame实例 cleaned_df = df.drop_duplicates() # 删除所有完全相同的行 mean_value = cleaned_df['price'].mean() filled_df = cleaned_df.fillna({'column_name': mean_value}) connection_string="sqlite:///example.db" engine=create_engine(connection_string) filled_df.to_sql('table_name', con=engine, index=False, if_exists='replace') ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值