Python:如何根据指定条件对DataFrame列的输出结果进行分组?
按条件筛选Pandas DataFrame中指定类别的行索引
你提供的代码已经实现了从分类数据集生成的DataFrame里,提取Class列值为0的所有行索引的功能。我来帮你拆解这段代码的逻辑,同时分享一种更符合Pandas惯用风格的写法:
原代码解析与完整示例
import numpy as np import pandas as pd from sklearn.datasets import make_classification # 生成可复现的分类数据集:50个样本、6个特征、3个有效特征、2个类别 X, y = make_classification(n_samples=50, n_features=6, n_informative=3, n_classes=2, random_state=10, shuffle=True) # 将特征矩阵和类别数组整合为结构化DataFrame,给各列命名 df = pd.DataFrame({ 'Feature 1': X[:,0], 'Feature 2': X[:,1], 'Feature 3': X[:,2], 'Feature 4': X[:,3], 'Feature 5': X[:,4], 'Feature 6': X[:,5], 'Class': y }) # 用列表推导式遍历Class列,收集值为0的行的索引 values = [i for i,x in enumerate(df['Class']) if x == 0] print(values)
运行这段代码会输出类似[5, 6, 9, 11, 13, 14, 17, ...]的索引列表,这些就是Class列值为0的所有行的位置。
更简洁的Pandas原生写法
其实Pandas内置了更高效、可读性更强的方式完成这个任务,无需手动遍历列:
# 利用布尔索引筛选目标行,直接提取索引并转为列表 values = df[df['Class'] == 0].index.tolist() print(values)
这种写法完全贴合Pandas的设计逻辑,在处理大型数据集时,性能表现也会优于手动遍历的方式。
内容的提问来源于stack exchange,提问作者user9238790
相关产品推荐
相关产品推荐

