Python:Pandas中df.iloc和df.loc区别
1 df.iloc
官方文档中定义为“基于整数位置的索引,用于按位置选择。”
df.iloc
就是只根据行列号对数据进行切片或选择。当作数组取数就行。
df.iloc [ raw , col ]
:第一个参数raw
表示行选,第二个参数表示列选,都必须是整数。
例子:
import pandas as pd
mydict = [{'a' : 1, 'b': 2, 'd' : 4},
{'a': 100, 'b':200, 'd':400},
{'a':1000, 'b':2000,'d':4000}]
df = pd.DataFrame(mydict)
df
1.1 按行索引
1.1.1 整数作为索引
df.iloc[n]
,表示查找第n行
df.iloc[0]
1.1.2 列表作为索引
查找列表中数字对应行号的数据,如,当输入[0,2]时,对应查找行号为0和2的数据,而不是0到2行
df.iloc[[0,2]]
1.1.3 切片作为索引
进行多行数据查找(左闭右开区间)
df.iloc[:2]#选择前两行数据
df.iloc[1:3]
1.1.4 布尔类型数据作为索引
需保持布尔类型数据与原数据数目一致,True代表选择,False代表不选择
df.iloc[[True, False, True]]#选择了第一行和第三行数据
1.1.5 表达式作为索引
df.iloc[lambda x: x.index % 2 == 0]
1.2 同时规定行和列进行索引
与只按行索引类似,也有五种方式,在行和列之间添加“,
”分别规定行列索引范围。
df.iloc[0, 1]#选择行号=0,列号=1的数据
输出:
2
df.iloc[[0, 2], [1, 2]]#选择行号为0和2,列号为1和2的数据
df.iloc[1:3, 0:3]#选择行号为1-2,列号为0-2的数据,注意切片范围为左闭右开
df.iloc[:, [True, False, False]]#行号全选,选择第1列数据
df.iloc[:, lambda df: [0, 2]]#选择dataframe的第1列与第3列
2 df.loc
loc按照标签或者索引、布尔值或者条件进行选择数据。
df.loc [ raw , col ]
:第一个参数raw
表示行选,行选只能是整数;后面的参数表示列选,列选只能是索引名称,比如姓名、年龄之类的
例子:
import pandas as pd
mydict = [{'a' : 1, 'b': 2, 'd' : 4},
{'a': 100, 'b':200, 'd':400},
{'a':1000, 'b':2000,'d':4000}]
df = pd.DataFrame(mydict)
df
df.loc[:,'b']#取出列标签为'b'的一列
df.loc[0:1,'b']#取出标签为'b'的第0行和第1行,左闭右闭区间