DataFrame是pandas两种数据类型之一(另一种是Series),日常使用最多的也是它。DataFrame是一张二维表,使用的时候要知道如何定位元素,loc和iloc是就是用来定位元素的。
loc索引器
loc索引器是一中基于元素的索引器,一般的形式是loc[*,*],第一个参数是行选择,第二个参数是列选择,如果不设置第二个参数,表示查询所有列。第一个参数可以接受4类合法对象,分别是单个元素、元素列表、元素切片以及布尔列表。先看一下示例数据:
df = pd.read_excel('calendar2022.xls',index_col='DAY')
print(df.head(5))
1.单个元素
索引单个元素,如果匹配一行,返回的是Serise,如果匹配多行,返回DataFrame:
print(df.loc[20221003])
2.元素列表
print(df.loc[[20221003,20221004]])
3.元素切片
print(df.loc[20221001:20221004])
4.布尔列表
比如查询春节是哪一天:print(df.loc[df['SPR']==1])
iloc素引擎
iloc索引器和loc索引器用法类似,只不过它是针对位置进行索引,第一个参数可以接受4类对象:整数、整数列表、整数切片和布尔列表。
1.整数
第二行数据:print(df.iloc[1])
2.整数列表
前三行三列:print(df.iloc[[0,1,2],[0,1,2]])
3.整数切片
依然是前三行散列:print(df.iloc[0:3,0:3]),结果和上图一致。
4.布尔列表
查询所有月份的最后一天:print(df.iloc[(df['EOM']==1).values]),这个写法有点另类,必须返回布尔列表的值,否则回报错,所以有类似需求时,建议使用loc索引器:print(df.loc[df['EOM']==1])。