如何在Pandas中使用set()提取指定列的唯一值?
用set()获取Pandas DataFrame指定列的唯一值
当然可以用set()提取DataFrame指定列的唯一值,但你的操作步骤存在问题,导致拿到了索引而非目标列值。以下是正确的实现方式:
1. 先正确构造示例DataFrame
你给出的原始数据格式不符合Pandas要求,先把它转换成标准的DataFrame:
import pandas as pd # 按描述,第一列是索引,第二列是目标列,后两列为其他数据 data = [ [-10, 2, 5], [24, 5, 10], [30, 3, 6], [30, 2, 1], [30, 4, 5] ] # 指定索引和列名,col_target为你要提取的目标列 df1 = pd.DataFrame(data, index=[0, 1, 2, 3, 4], columns=['col_target', 'col2', 'col3'])
2. 提取目标列并转成set
直接定位到目标列,将其转换成集合即可:
# 提取目标列的唯一值 unique_values = set(df1['col_target']) print(unique_values) # 输出: {-10, 24, 30}
如果你的DataFrame列名是数字(比如目标列是列0),代码改为:
unique_values = set(df1[0])
你的操作错误分析
- 参数拼写错误:
column应该是columns,构造DataFrame时参数名错误会导致列处理异常 - 不必要的转置操作:转置后你拿到的是原DataFrame的列索引,而非目标列数据
- 列提取方式错误:没有直接定位到目标列,反而通过转置混淆了数据结构
另外,也可以先用Pandas自带的unique()方法获取唯一值数组,再转成set,效果一致:
unique_values = set(df1['col_target'].unique())
内容的提问来源于stack exchange,提问作者Mhmoud Khadija
相关产品推荐
相关产品推荐

