pandas中iloc与loc的使用

用的时候有些模糊,查下资料彻底搞清一下。

官方文档上一个示例的DataFrame,直接拿过来,

import pandas as pd

mydict = [{
    
    'a': 1, 'b': 2, 'c': 3, 'd': 4},
          {
    
    'a': 100, 'b': 200, 'c': 300, 'd': 400},
          {
    
    'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000}]
df = pd.DataFrame(mydict)

在这里插入图片描述
下面都针对这个DataFrame操作,其中0 1 2叫做行标签,a b c d叫做列标签,有一点需要注意,如果没有显式指定行标签,则会自动用行号作为它的行标签,关于什么是行号和行标签,行号就是从0开始编号的整数,可以理解为数组下标,行标签只是一个用来标识行的不重复的唯一标识,可以理解为K-V结构中的K。无论指没指定行标签,行号都是隐式存在的,列标签和列号也同理。

iloc

iloc属性官方文档地址:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html#pandas.DataFrame.iloc

iloc,integer-location,整数位置索引,整数的取值范围为 from 0 to length-1 of the axis。

iloc的参数个数可以为1个或2个,1个时是对行过滤,2个时第一个参数过滤行,第二个参数过滤列。

iloc的参数类型可以为整数、整数列表、索引切片、布尔数组、函数或lambda表达式,常用的前3个。

一般来说,两个参数都为多值类型时(整数列表/索引切片/布尔数组/函数或lambda表达式),返回的结果还是DataFrame,无论这个DateFrame是单列还是多列。如果一个参数为单值类型(整数)一个为多值类型,则返回一个Series,如果两个参数都为单值类型,则返回一个具体的值。

当只有一个参数时,缺省的参数默认的是全部,为多值类型。

iloc demo

两个参数都为单值类型:

print(df.iloc[0, 1])
print(type(df.iloc[0, 1]))

在这里插入图片描述

两个参数一个为单值一个为多值:

print(df.iloc[0, [1]])
print(type(df.iloc[0, [1]]))

在这里插入图片描述

两个参数都为多值类型:

print(df.iloc[[0], [1]])
print(type(df.iloc[[0], [1]]))

在这里插入图片描述

关于iloc传递lambda参数,我在使用中遇到了一些问题,问题地址,自己搞了半天没搞明白什么原因,有知道的朋友欢迎留言解惑~

loc

loc和iloc用法基本一致,只是需要将行号或列号换成标签名,唯一的不同就是在切片的时候,iloc包前不包后,loc前后都包含。

loc的切片,和python中的切片有些不同, : 冒号左右两边的值可以不是整数,例如 df.loc[:, ‘a’:‘c’],表示取a列到c列的所有数据

print(df.loc[:, 'a':'c'])
print(type(df.loc[:, 'a':'c']))```

在这里插入图片描述
具体可以查阅 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html#pandas.DataFrame.loc

猜你喜欢

转载自blog.csdn.net/atwdy/article/details/125635750