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

如何将列表与DataFrame执行inner merge(内连接)合并?

解决方案

首先先修正一个小问题:别用list当变量名,会覆盖Python内置的list类型,后续容易出问题。下面直接给两种可行的实现方式:


先把数据转成真正的DataFrame(如果还没转的话)

你的原始数据是嵌套列表,先转成pandas的DataFrame方便操作:

import pandas as pd

# 原始数据
raw_data = [[[1,2,3],'a'],[[4,5],'b'],[[6,7,8],'c']]
match_list = [[1,2,3],[4,5]]

# 转为DataFrame
df = pd.DataFrame(raw_data, columns=['data_col', 'label_col'])

方法一:用isin直接筛选(最简单)

直接筛选data_col列里存在于match_list中的行,再转回嵌套列表:

# 筛选符合条件的行
filtered_rows = df[df['data_col'].isin(match_list)]
# 转回你要的嵌套列表格式
result = filtered_rows.values.tolist()
print(result)
# 输出:[[[1, 2, 3], 'a'], [[4, 5], 'b']]

方法二:转元组后执行Merge(适合复杂场景)

如果后续需要更复杂的连接逻辑,可以把不可哈希的列表转成可哈希的元组,再用merge做内连接:

# 把df里的列表转成元组
df['data_tuple'] = df['data_col'].apply(tuple)
# 把匹配列表也转成元组的DataFrame
match_df = pd.DataFrame({'data_tuple': [tuple(item) for item in match_list]})

# 内连接
merged_df = pd.merge(df, match_df, on='data_tuple', how='inner')
# 保留需要的列并转回嵌套列表
result = merged_df[['data_col', 'label_col']].values.tolist()
print(result)
# 输出:[[[1, 2, 3], 'a'], [[4, 5], 'b']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:52:07