如何筛选仅存在于2010年组而不在2009年组的唯一记录?
获取仅2010年存在、2009年不存在的Model记录
原始数据表格
| Model | year |
|---|---|
| Apple | 2009 |
| Apple | 2010 |
| HTC | 2010 |
| Motorola | 2009 |
| Motorola | 2010 |
| Nokia | 2009 |
| Nokia | 2010 |
| One Plus | 2009 |
| One Plus | 2010 |
| Samsung | 2009 |
| Samsung | 2010 |
实现方法
方法一:SQL查询
通过子查询排除2009年已出现的Model,直接筛选目标记录:
SELECT Model, year FROM your_table_name WHERE year = 2010 AND Model NOT IN ( SELECT Model FROM your_table_name WHERE year = 2009 );
执行后返回结果:
| Model | year |
|---|---|
| HTC | 2010 |
方法二:Python Pandas处理
如果用代码处理表格数据,可按以下步骤操作:
import pandas as pd # 加载数据到DataFrame df = pd.DataFrame([ ["Apple", 2009], ["Apple", 2010], ["HTC", 2010], ["Motorola", 2009], ["Motorola", 2010], ["Nokia", 2009], ["Nokia", 2010], ["One Plus", 2009], ["One Plus", 2010], ["Samsung", 2009], ["Samsung", 2010] ], columns=["Model", "year"]) # 分别提取两年的Model集合 models_2010 = set(df[df["year"] == 2010]["Model"]) models_2009 = set(df[df["year"] == 2009]["Model"]) # 求差集得到仅2010年存在的Model,再匹配原数据 target_models = models_2010 - models_2009 result = df[(df["year"] == 2010) & (df["Model"].isin(target_models))] print(result)
运行后输出包含HTC 2010的结果集。
方法三:Excel手动筛选
- 筛选出所有2010年的记录,复制到新工作表;
- 在新工作表新增列,用
COUNTIF函数判断每个Model是否在原表2009年的记录中出现,比如在C2单元格输入:=COUNTIF(原表!A:A, A2),下拉填充; - 筛选新增列值为0的行,即可得到目标记录
HTC 2010。
内容的提问来源于stack exchange,提问作者Ron
相关产品推荐
相关产品推荐

