如何在Pandas中按条件值过滤行并保留完整行列结构
你当前的代码仅生成了用于筛选行的布尔掩码,并没有用该掩码索引原数据框的全量列数据,因此仅得到一维布尔向量。
正确实现代码(Pandas场景)
如果是按列的位置取最左侧第一列(和你的需求一致,不依赖列名):
# 生成第一列小于0.02的布尔掩码,iloc[:,0]对应位置索引的第一列(pandas索引从0开始) mask = df.iloc[:, 0] < 0.02 # 用掩码过滤行,默认保留所有列 df_new = df[mask]
也可以合并为一行写法:
df_new = df[df.iloc[:, 0] < 0.02]
如果你知道第一列的具体列名(例如列名为value),也可以用列名直接索引,可读性更高:
df_new = df[df['value'] < 0.02]
注意事项
- pandas的位置索引
iloc从0开始计数,如果你写iloc[:,1]会取到第二列,请注意对应你的实际需求调整索引值 - 不要直接写
df[:, 0],该写法在pandas中仅适用于多层索引场景,普通数据框按位置取列必须使用iloc属性
内容的提问来源于stack exchange,提问作者js2822
相关产品推荐
相关产品推荐

