You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并两列并筛选观测值:额外保留非存在位置111

实现方案拆解与代码示例

首先我先明确下你的需求:最终结果需要包含两部分内容:

  1. 保留list1中那些在list2里存在的位置(也就是移除list1里不在list2中的位置)
  2. 额外添加那个不在list1里的特定位置111(我会分两种场景给出方案:不管111是否在list2里都加,或者仅当111在list2里时才加)

下面用两种最常用的数据处理工具来实现:

一、Python Pandas 实现

假设你已经把两个列表转换成了DataFrame,列名统一为location:

import pandas as pd

# 模拟你的数据(实际替换成你自己的真实数据即可)
df1 = pd.DataFrame({'location': [1,2,3,4,5]})  # list1:已存在的位置目录
df2 = pd.DataFrame({'location': [2,3,5,6,7]})  # list2:包含存在和非存在的位置

# 第一步:筛选出list1和list2共有的位置(即保留list1中在list2里存在的条目)
common_locations = df1[df1['location'].isin(df2['location'])]

# 第二步:处理特定位置111
special_loc = pd.DataFrame({'location': [111]})

# 场景1:不管111是否在list2里,只要它不在list1里就添加
if 111 not in df1['location'].values:
    final_result = pd.concat([common_locations, special_loc], ignore_index=True)
else:
    final_result = common_locations

# 场景2:仅当111不在list1里,且在list2里时才添加
# if 111 not in df1['location'].values and 111 in df2['location'].values:
#     final_result = pd.concat([common_locations, special_loc], ignore_index=True)
# else:
#     final_result = common_locations

# 查看最终结果
print(final_result)

如果你的数据只是普通Python列表,也可以用简单的列表推导实现:

list1 = [1,2,3,4,5]
list2 = [2,3,5,6,7]

# 先取交集
common = [x for x in list1 if x in list2]
# 添加特定位置111(仅当它不在list1里)
if 111 not in list1:
    common.append(111)

# 最终结果就是common列表
print(common)

二、SQL 实现

假设你有两个数据表list1和list2,都包含location字段:

场景1:不管111是否在list2里,只要不在list1里就添加

-- 先取list1和list2的交集,再合并上特定位置111(仅当111不在list1中时)
SELECT l1.location
FROM list1 l1
INNER JOIN list2 l2 ON l1.location = l2.location
UNION ALL
SELECT 111
WHERE NOT EXISTS (SELECT 1 FROM list1 WHERE location = 111);

场景2:仅当111不在list1里且在list2里时才添加

SELECT l1.location
FROM list1 l1
INNER JOIN list2 l2 ON l1.location = l2.location
UNION ALL
SELECT 111
WHERE NOT EXISTS (SELECT 1 FROM list1 WHERE location = 111)
AND EXISTS (SELECT 1 FROM list2 WHERE location = 111);

补充说明

  • 用UNION ALL而非UNION是因为它的执行效率更高,且我们已经确保111不会和交集里的内容重复(因为判断了111不在list1中)
  • 如果你的需求有微调,比如要保留原列表的其他字段,只需要在代码中对应保留字段即可,核心逻辑不变

内容的提问来源于stack exchange,提问作者delete

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:30:13