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

合并含列表的DataFrame列失败的问题与解决方法

Pandas按列表类型列合并报错?转成元组就搞定!

先看实际场景示例,我们有两个包含列表类型列的DataFrame:

import pandas as pd

df1 = pd.DataFrame({'a':list('ab'), 'b':[[1,2],[4,5]]})
print(df1)
#    a       b
# 0  a  [1, 2]
# 1  b  [4, 5]

df2 = pd.DataFrame({'c':list('cd'), 'b':[[1,7],[4,5]]})
print(df2)
#         b  c
# 0  [1, 7]  c
# 1  [4, 5]  d

当尝试直接以列表类型的b列为键合并时:

df = pd.merge(df1, df2, on='b')

会触发如下错误:

TypeError: type object argument after * must be a sequence, not map

这是因为Pandas的merge无法直接将可变序列(比如列表)作为合并键来处理。解决思路很简单,把列表转换为不可变的元组类型即可:

df1['b'] = df1['b'].apply(tuple)
df2['b'] = df2['b'].apply(tuple)
df = pd.merge(df1, df2, on='b')
print(df)
#    a       b  c
# 0  b  (4, 5)  d

这样就能顺利得到匹配的合并结果了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:18:11