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

如何将DataFrame中A、B两列的唯一值合并为一个列表?

Pandas合并两列唯一值为单一列表的解决方法

问题场景

给定如下DataFrame:

id  A   B
1   x   k
2   y   x
3   x   l
4   x   k

需要将A、B两列的所有唯一值合并为一个无嵌套、无重复的列表,期望结果:

unique_list = ['x', 'y', 'k', 'l']

错误原因分析

你尝试的代码:

list = df['A'].unique().tolist()
list.append(df['B'].unique())

得到嵌套列表['x', 'y', ['x', 'k', 'l']],原因有两点:

  1. append()方法会将传入的整个列表作为单个元素添加到原列表中,而非逐个添加元素;
  2. 未处理A、B两列之间的重复值(比如A列的x和B列的x重复)。

正确解决方法

方法一:简洁合并法(推荐)

直接将两列合并为一个Series,再取唯一值转列表:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'id': [1, 2, 3, 4],
    'A': ['x', 'y', 'x', 'x'],
    'B': ['k', 'x', 'l', 'k']
})

# 合并两列并获取唯一值列表
unique_list = pd.concat([df['A'], df['B']]).unique().tolist()
print(unique_list)  # 输出: ['x', 'y', 'k', 'l']

此方法一步到位,自动去重且保留元素首次出现的顺序。

方法二:分步扩展去重法

先获取A列唯一值列表,用extend()添加B列的唯一值,再去重:

# 分别获取两列的唯一值列表
a_unique = df['A'].unique().tolist()
b_unique = df['B'].unique().tolist()

# 扩展列表(逐个添加元素,而非嵌套)
a_unique.extend(b_unique)

# 去重并保留首次出现顺序
unique_list = list(dict.fromkeys(a_unique))
print(unique_list)  # 输出: ['x', 'y', 'k', 'l']

如果不介意顺序,也可以用list(set(a_unique))去重,但dict.fromkeys能更好地保留元素出现的先后顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:15:12