loc(location)为Selection by Label函数,即通过标签(行列索引的具体值)来索引数据,由于loc函数中索引的标签是str类型,所以标签的开头和结尾都要写。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(0,60,2).reshape(10,3),columns=list('abc'))
df.loc[0:2,['b','c']]#默认行索引情况下,选取df前三行的b,c两列
df.loc[:,'a':'c']#选取df的a到c列,c列也包含在内,且单独的:表示所有行
高级用法:
df.loc[df['b'][(df['b'] > 49)|(df['b'] < 10)].index, 'b'] = np.nan#将b列中所有大于49或小于10的值赋值为null值
df.loc[(df['b'].isnull()), 'b'] = 0#再将b列中所有null值全部赋值为0
df.loc[(df['b'].notnull()), 'b'] = 0#或将b列中所有非null值全部赋值为0
df_a,df_c = df.loc[(df['b'] > 50)|(df['b'] < 10),('a','c')].values[2]#根据b列中的值来选取a,c两列的值,并将返回结果中的第三行赋值到df_a和df_c中
iloc(integer location)为Selection by Position函数,即通过位置(轴0到轴-1)来索引数据,由于iloc函数中索引的位置是int类型,在选取行列时要注意前闭后开。
df.iloc[0:2,[0,1]]#选取df前两行的第一和第二列,行序号为2的第三行不包括在内
df.iloc[:,0:3]#选取df的前三列,行序号为3的第四行不包括在内
loc和iloc函数的两个参数既可以是列表也可以是单个字符(整数),如果两个参数都为列表则返回的是DataFrame,否则,则为Series。
df.iloc[0:2,[0,1]]#返回对象类型为DataFrame
df.iloc[1,0:2]#返回对象为Series
df.loc[0:1,['b','c']]#返回对象为DataFrame
df.loc[1,'a':'c']#返回对象为Series
df.loc[:,['b','c']]#返回对象为DataFrame