pandas.DataFrame.loc[] 是数据框的属性,通过指定标签或布尔数组来访问数据框的一组行和列。pandas.DataFrame是带有轴标签的二维表数据结构,如列和行。从数据框选择列结果是新的数据框,它仅包括特性从原数据框中选择的列。
pandas.DataFrame.loc 的关键说明:
- loc用于通过标签选择或过滤行和列
- 当选择行时,选哟提供索引标签
- 也提供了其他方法选择行和列,如:范围、交替选择
loc用于通过数据框的名称(标签)选择行列,是数据框最常用的属性。数据框的主要优点是容易使用,当你使用pandas.DataFrame.loc[] 属性去选择或过滤数据框时,你会认同这个优势。
df.loc[start:stop:step, start:stop:step]
第一个start:stop:step用于通过名称或标签选择行,后面的用于通过名称或标签选择列。
- start 是行列标签的名称
- stop 是最后一个取用的行列标签的名称
- step 是每次抽取后索引前进数量
关键点说明:
- 不指定start行列,loc[]从起始点开始
- 不指定stop,loc[]从开始标签起选择所有行列
- 同时提供start和stop,选择两种之间的所有行列
下面创建数据框,并学习如何使用loc[]。
import pandas as pd
technologies = {
'Courses':["Spark","PySpark","Hadoop","Python","pandas"],
'Fee' :[20000,25000,26000,22000,24000],
'Duration':['30day','40days','35days','40days','60days'],
'Discount':[1000,2300,1200,2500,2000]
}
index_labels=['r1','r2','r3','r4','r5']
df = pd.DataFrame(technologies,index=index_labels)
print(df)
# Outputs
#r1 Spark 20000 30day 1000
#r2 PySpark 25000 40days 2300
#r3 Hadoop 26000 35days 1200
#r4 Python 22000 40days 2500
#r5 pandas 24000 60days 2000
loc示例
下面通过几个实例展示如何使用loc.
通过标签选择单行/列loc可以通过标签选择行、列,也支持选择多行、列,即两行之间的记录,两列之间列。下面示例通过标签选择行列:
# 选择第一行的所有列 print(df.loc['r1', :]) # Courses Spark # Fee 20000 # Duration 30day # Discount 1000 # Name: r1, dtype: object # 选择所有行的Courses列 print(df.loc[:, "Courses"]) #Outputs # Courses #r1 Spark #r2 PySpark #r3 Hadoop #r4 Python #r5 pandas选择多行/列
下面示例使用loc属性通过标签选择多行/列: # 通过标签选择多行 print(df.loc[['r2','r3']]) # Outputs # Courses Fee Duration Discount #r2 PySpark 25000 40days 2300 #r3 Hadoop 26000 35days 1200 # 通过标签选择多列 print(df.loc[:, ["Courses","Fee","Discount"]]) # Outputs # Courses Fee Discount #r1 Spark 20000 1000 #r2 PySpark 25000 2300 #r3 Hadoop 26000 1200 #r4 Python 22000 2500 #r5 pandas 24000 2000范围选择
loc支持范围选择,指定两个标签,返回包括两者之间的所有行或列:
# 指定俩个行标签,返回包括两者之间的行记录 print(df.loc['r1':'r4']) # 输出结果 # Courses Fee Duration Discount #r1 Spark 20000 30day 1000 #r2 PySpark 25000 40days 2300 #r3 Hadoop 26000 35days 1200 #r4 Python 22000 40days 2500 # 选择两个列之间的所有列 print(df.loc[:,'Fee':'Discount']) # 输出结果 # Fee Duration Discount #r1 20000 30day 1000 #r2 25000 40days 2300 #r3 26000 35days 1200 #r4 22000 40days 2500 #r5 24000 60days 2000交替选择
与范围类型,loc也支持交替选择:
# 按行交替选择,每两行选一次 print(df.loc['r1':'r4':2]) # 输出结果: # Courses Fee Duration Discount #r1 Spark 20000 30day 1000 #r3 Hadoop 26000 35days 1200 # 交替选择列 print(df.loc[:,'Fee':'Discount':2]) # 输出结果: # Fee Discount #r1 20000 1000 #r2 25000 2300 #r3 26000 1200 #r4 22000 2500 #r5 24000 2000
需要特别说明的是step还支持负数,表示逆序选择:
import pandas as pd print(df.loc[::-1, :]) # Courses Fee Duration Discount # r5 pandas 24000 60days 2000 # r4 Python 22000 40days 2500 # r3 Hadoop 26000 35days 1200 # r2 PySpark 25000 40days 2300 # r1 Spark 20000 30day 1000
我们看到结果正好逆序输出,读者也可以尝试修改-1为其他负数理解反向交替选择的机理。
条件选择根据条件选择:
# 使用条件,选择fee列大于24000的记录 print(df.loc[df['Fee'] >= 24000]) # 输出结果 # Courses Fee Duration Discount #r2 PySpark 25000 40days 2300 #r3 Hadoop 26000 35days 1200 #r5 pandas 24000 60days 2000总结
本文学习了pandas数据框的loc语法及其用法,并通过示例展示了如何选择/过滤行列数据。



