如何基于DataFrame的a列值小于6的条件筛选并打印数组
解决方法
要筛选出a列值小于6的完整行,直接用Pandas的布尔索引就能实现,代码如下:
import numpy as np import pandas as pd data = np.array([1, 7, 3, 6, 2, 8, 5, 9, 4]).reshape(3,3) df = pd.DataFrame(data, index = ['One', 'Two', 'Three'], columns = ['a', 'b', 'c']) # 筛选a列值小于6的所有行 filtered_df = df[df['a'] < 6] print(filtered_df)
运行后输出结果:
a b c One 1 7 3 Three 5 9 4
你之前的方法问题说明
- 第一种方法
np.less(df, df['a']<6):df['a']<6生成的是布尔数组[True, False, True],而np.less是用于元素间的大小比较,用整个DataFrame和布尔数组对比逻辑错误,会返回无意义的布尔矩阵。 - 第二种方法
np.where(df['a'] < 6, df):np.where需要三个参数(条件、满足条件的返回值、不满足条件的返回值),你只传入两个参数,返回的是符合条件元素的索引,而非筛选后的行数据。
内容的提问来源于stack exchange,提问作者Brock
相关产品推荐
相关产品推荐

