本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
pandas loc与iloc用法及区别
iamgeek · 145浏览 · 发布于2023-05-17 +关注

本文主要介绍了pandas loc与iloc用法及区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

共同点

两者都接收两个参数,第一个参数是行的范围,第二个参数是列的范围

不同点

  • loc函数接收的是行/列的名称,iloc函数接收的是行/列的下标(从0开始)

  • loc函数在切片时是按闭区间切片的,也就是区间两边都能取到,iloc函数则是按传统的左闭右开的方式切片的

图解:

6203ca715ff5ad5bc85fc03674b35b19_2023051614251816.png

详细用法

用于展示用法的数据data如下:

84e294fb22618890da4ee2ba2a6f3593_2023051614251817.png

loc函数参数类型

单个行名/列名 或 行名/列名的列表

print(data.loc['Chris']) # 等价于data.loc['Chris', :]

输出:

20aef5c2c8748951cd7ac306ca81ba0a_2023051614251818.png

注意上面这种写法返回的是pandas.core.series.Series对象,如果要pandas.core.frame.DataFrame对象可以改成data.loc[['Chris']]

print(data.loc[['Alice', 'David', 'Ellen'], ['Physics', 'Chemistry']])

输出:

8ba8b90f302df508689de9a3ce220d76_2023051614251819.png

列名/行名的切片

print(data.loc['Alice': 'Ellen', 'Math': 'English'])

输出:

f0c4dfac7db873818c0659708c76f740_2023051614251820.png

布尔型列表(注意长度需要和行数/列数保持一致)

print(data.loc[[False, True, False, False, True, True], [True, False, False, True, True, True]])

输出:

90717750d61a9a1c784587a3615046cd_2023051614251821.png

可以返回布尔型列表的表达式(判断或函数)

print(data.loc[data['Chinese'] > 100, 'Chinese'])

输出:

ea21bd01fceeaa40744e1b7e8f4adbf9_2023051614251822.png

同样的,这种写法返回的是pandas.core.series.Series对象,如果要pandas.core.frame.DataFrame对象可以改成data.loc[data['Chinese'] > 100, ['Chinese']]

print(data.loc[lambda x: x['English'] < 100])

输出:

cec5f3c68969d1805976a3b1aaef9f83_2023051614251823.png

iloc函数参数类型

单个下标 或 若干下标构成的列表

print(data.iloc[3]) # 等价于print(data.iloc[3, :])

输出:

5a02032c47fffe02b5873608237c88b2_2023051614251924.png

这种写法返回的是pandas.core.series.Series对象,如果要pandas.core.frame.DataFrame对象可以改成data.iloc[[3]]

print(data.iloc[[1, 2, 4], [2, 4, 5]])

输出:

2c498eb617b577798d96c452522fb811_2023051614251925.png

下标的切片

print(data.iloc[4: 6, 1:])

输出:

d0140a63903652031402b71c9cc1a0af_2023051614251926.png

布尔型列表(注意长度需要和行数/列数保持一致)

print(data.iloc[[False, True, False, False, True, True], [True, False, False, True, True, True]])

输出:

90717750d61a9a1c784587a3615046cd_2023051614251821.png

可以返回合理值的函数

data.iloc[lambda x: x.index > 'Bob']

输出:

eea0e08a46b4e37e6ae634f80ba69ade_2023051614251927.png

解释一下,这里传入lambda匿名函数的x是整个DataFrame,所以x.index就是['Alice', 'Bob', 'Chris', 'David', 'Ellen', 'Frank'],大于Bob即取字典序大于Bob的那些index;这里的函数意义不大,真正有用的是当DataFrame的index是整数的时候你可以通过这种方式选取满足某种要求的index,比如只选那些index为偶数的记录:

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


相关推荐

PHP实现部分字符隐藏

沙雕mars · 1325浏览 · 2019-04-28 09:47:56
Java中ArrayList和LinkedList区别

kenrry1992 · 908浏览 · 2019-05-08 21:14:54
Tomcat 下载及安装配置

manongba · 970浏览 · 2019-05-13 21:03:56
JAVA变量介绍

manongba · 963浏览 · 2019-05-13 21:05:52
什么是SpringBoot

iamitnan · 1087浏览 · 2019-05-14 22:20:36
加载中

0评论

评论
努力追求卓越,极致,这么一个GEEK人,希望可以跟大家认识,交流一下。
分类专栏
小鸟云服务器
扫码进入手机网页