以上查询方法,既适用于行,也适用于列注意观察降维 Dataframe > Series > Value1、使用单个label值查询数据
每一行和每一列,都可以只传入单个值,实现精确匹配(这里可以发现降维的效果)
# 得到Dataframe中某个单元格的单个值df.loc['行名称','列名称']# 得到一个Series(这里传入的列名是一个值列表)df.loc['行名称',['列名称_1','列名称_2']]
2、使用值列表批量查询# 得到一个Dataframedf.loc[['行名称_1','行名称_2'],['列名称_1','列名称_2']]
3、使用数值区间进行范围查询这里注意,应用于 loc 的区间既包含开始,也包含结束。
# 行index按区间df.loc['行名称_1':'行名称_2','列名称']# 列index按区间df.loc['行名称','列名称_1':'列名称_2']# 行列index均按区间df.loc['行名称_1':'行名称_2','列名称_1':'列名称_2']
这里我们可以看到,传入的行、列值不再是一个列表,而是以 “ :” 连接的一个区间,并且需要注意的是传入的值并不是索引号,而是索引标签值,按照行、列在Dataframe中的顺序进行区间分割
4、使用条件表达式查询使用条件表达式可以返回一个布尔列表,这个列表的长度等于行数或者列数(一般常用于行)
# 进行一个简单的查询,温度低于10度的所有记录df.loc[df['WenDu'] < 10,:] # df['WenDu']取出温度这一列进行条件匹配,后面的冒号代表查询所有列# 多条件查询df.loc[(df['WenDu'] < 10) & (df['WenDu'] > 0),:]
df['WenDu'] < 10 返回的是一个包含布尔值的Series, < 10 的记录为True,反之为False。
5、调用函数查询# 直接写 lambda 表达式df.loc[lambda df : (df['WenDu'] < 10) & (df['WenDu'] > 0),:]
当按照行进行筛选时,loc方法会将每一行的Series传给lambda的df变量,同样会得到一个布尔结果,用于筛选行(或列)数据。
也可以自己编写函数,但要注意的是在loc中使用函数时只需要输入函数名即可,函数本身也可以当成变量传递,其参数取决于外部的变量。