Python:如何检查数据是否存在于数据集的指定列中?
解决二维数组中检查指定列是否存在特定值的问题
问题分析
你写的list['Number']会触发语法错误,原因是普通Python二维列表不支持用字符串键名访问列,它只能通过整数索引定位元素。你的示例数据是普通二维列表,并非带列名的结构化数据集(比如pandas的DataFrame),所以这种写法不符合Python语法规范。
解决方案
场景1:普通Python二维列表
如果你的数据是普通二维列表,比如my_list = [[1, 2], [1, 3]],要检查某个值是否在指定列,需先提取该列的所有元素,再判断值是否在其中:
提取**第1列(索引为0,对应每个子列表的第一个元素)**并检查:
# 提取第1列的所有元素 column_0 = [row[0] for row in my_list] # 判断3是否在这一列 if 3 in column_0: print("3存在于第1列") else: print("3不存在于第1列")运行结果会输出
3不存在于第1列,因为示例中第1列的元素是[1, 1]。提取**第2列(索引为1,对应每个子列表的第二个元素)**并检查:
column_1 = [row[1] for row in my_list] if 3 in column_1: print("3存在于第2列") else: print("3不存在于第2列")运行结果会输出
3存在于第2列,符合你的示例数据情况。
场景2:带列名的结构化数据集(比如pandas DataFrame)
如果你的数据是带列名的表格型数据,可先将列表转换为pandas DataFrame,再通过列名访问:
import pandas as pd # 转换为带列名的DataFrame df = pd.DataFrame([[1, 2], [1, 3]], columns=['Number', 'Other']) # 检查3是否在'Number'列中(需用.values获取列的实际元素值) if 3 in df['Number'].values: print("3存在于Number列") else: print("3不存在于Number列")
注意:直接用3 in df['Number']会检查索引是否包含3,而非列元素,所以必须加上.values。
内容的提问来源于stack exchange,提问作者Ethan Shah
相关产品推荐
相关产品推荐

