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

image

1.1 按行索引

1.1.1 整数作为索引

df.iloc[n],表示查找第n行

df.iloc[0]

image

1.1.2 列表作为索引

查找列表中数字对应行号的数据,如,当输入[0,2]时,对应查找行号为0和2的数据,而不是0到2行

df.iloc[[0,2]]

image

1.1.3 切片作为索引

进行多行数据查找(左闭右开区间)

df.iloc[:2]#选择前两行数据

image

df.iloc[1:3]

image

1.1.4 布尔类型数据作为索引

需保持布尔类型数据与原数据数目一致,True代表选择,False代表不选择

df.iloc[[True, False, True]]#选择了第一行和第三行数据

image

1.1.5 表达式作为索引

df.iloc[lambda x: x.index % 2 == 0]

image

1.2 同时规定行和列进行索引

与只按行索引类似,也有五种方式,在行和列之间添加“”分别规定行列索引范围。

df.iloc[0, 1]#选择行号=0,列号=1的数据

输出:
2

df.iloc[[0, 2], [1, 2]]#选择行号为0和2,列号为1和2的数据

image

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

image

df.loc[:,'b']#取出列标签为'b'的一列

image

df.loc[0:1,'b']#取出标签为'b'的第0行和第1行,左闭右闭区间

image

posted @ 2023-01-10 13:51  TTS-S  阅读(2317)  评论(0编辑  收藏  举报