博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pandas.loc方法使用详解
阅读量:5906 次
发布时间:2019-06-19

本文共 3424 字,大约阅读时间需要 11 分钟。

今天还是接着来说,今天我们来好好聊聊Pandas中的.loc方法!

我们首先来看一下文档里是怎么说的:

pandas provides a suite of methods in order to have purely label based indexing.

The .loc attribute is the primary access method. The following are valid inputs:

  • A single label, e.g. 5 or'a', (note that 5 is interpreted as a label of the index. This use is not an integer position along the index)
  • A list or array of labels ['a', 'b', 'c']
  • A slice object with labels 'a':'f' (note that contrary to usual python slices, both the start and the stop are included, when present in the index! - also See )
  • A boolean array
  • A callable, see
>>> import numpy as np>>> import pandas as pd>>> s1 = pd.Series(np.random.randn(6), index=list('abcdef'))>>> s1a   -0.354041b    0.286674c   -1.144354d   -2.290284e   -0.299573f   -0.011348dtype: float64复制代码

我们定义了一个包含6个随机数的pandas.Series,这6个数的索引标签(a label of the index)分别是abcdef 这6个字符,我们可以通过索引标签来获取我们想要获取的数据:

>>> s1.loc['b']0.28667372019035603复制代码

我还想要再强调一下,我们是按照索引的标签(a label of the index)了来获取数据的,跟这个索引本身是几并无关系:

>>> s2 = pd.Series(np.random.randn(6), index=[5, 4, 3, 2, 1, 0])>>> s25    0.0636224   -0.7897193   -0.9164642    1.0238281   -0.4400470    0.269705dtype: float64>>> s2.loc[5]0.063622356476971106复制代码

可以看到,我们这里生成了一个新的包含6个随机数的pandas.Series,这6个数的索引标签(a label of the index)分别是5,4,3,2,1,0这6个整数,这与他们在这个pandas.Series中处于第几行并无关系。当我们传入整数5的时候,返回了标签5所在行所对应的数字,而并非第5行所对应的数字。

我们也可以通过一个标签切片(a slice objects with labels)来获取多个数据也可以进行赋值:

>>> s1.loc['b':'f']b    0.286674c   -1.144354d   -2.290284e   -0.299573f   -0.011348dtype: float64>>> s1.loc['b':]b    0.286674c   -1.144354d   -2.290284e   -0.299573f   -0.011348dtype: float64>>> s1.loc['d':'f'] = 0>>> s1a   -0.354041b    0.286674c   -1.144354d    0.000000e    0.000000f    0.000000dtype: float64复制代码

可以看到这里的切片用法和Python原生的list的切片是不一样的,冒号两边的startstop位置都被包含了进来,要注意两者之间的差别!

pandasDataFrame.loc方法并没有很大区别,以下展示代码,不进行过多赘述

>>> df1 = pd.DataFrame(np.random.randn(6, 4),                        index=list('abcdef'),                        columns=list('ABCD'))>>> df1	A	        B	        C	        Da	0.031419	0.658151	1.069829	-1.366788b	0.889844	-1.402487	0.183858	-0.037312c	0.278374	-0.122152	0.429787	-1.251808d	-0.935268	-0.768464	-1.343263	-0.435845e	-0.612629	-1.538650	-1.774796	1.013778f	-1.313907	-0.472731	-1.635683	0.140725>>> df1.loc[['a', 'b', 'd'], :]	A	        B	        C	        Da	0.031419	0.658151	1.069829	-1.366788b	0.889844	-1.402487	0.183858	-0.037312d	-0.935268	-0.768464	-1.343263	-0.435845>>> df1.loc['d':, 'A':'C']	A	        B	        C	        d	-0.935268	-0.768464	-1.343263	e	-0.612629	-1.538650	-1.774796	f	-1.313907	-0.472731	-1.635683>>> df1.loc['a']A    0.031419B    0.658151C    1.069829D   -1.366788Name: a, dtype: float64>>> df1.xs('a')A    0.031419B    0.658151C    1.069829D   -1.366788Name: a, dtype: float64>>> df1.loc['a'] > 1A    FalseB    FalseC     TrueD    FalseName: a, dtype: bool>>> df1.loc[:, df1.loc['a'] > 1]        Ca	1.069829b	0.183858c	0.429787d	-1.343263e	-1.774796f	-1.635683>>> df1.loc['a', 'A']0.03141854106892028>>> df1.at['a', 'A']0.03141854106892028复制代码

最后再看一点:

>>> s = pd.Series(list('abcde'), index=[0, 3, 2, 5, 4])>>> s0    a3    b2    c5    d4    edtype: object>>> s.sort_index()0    a2    c3    b4    e5    ddtype: object>>> s.sort_index().loc[1:6]2    c3    b4    e5    ddtype: object复制代码

由上面我们看到我们可以根据索引标签(a label of the index)来进行排序,并且可以通过索引标签来筛选数据

关于pandas.loc方法的用法就写到这里啦!文章中涉及的所有代码都可以在我的中找到!文章和代码中有什么错误错误恳请大家不吝赐教!欢迎你们留言评论!

转载地址:http://frcpx.baihongyu.com/

你可能感兴趣的文章
sax方式解析XML学习笔记
查看>>
Springboot配置(上)
查看>>
java--Eclipse for mac 代码提示(代码助手,代码联想)快捷键修改
查看>>
left join on/right join on/inner join on/full join on连接
查看>>
template.helper 多参数
查看>>
Android 四大组件之一(Activity)
查看>>
扫描(一)
查看>>
Centos7安装rabbitmq server 3.6.0
查看>>
iostat命令学习
查看>>
html video的url更新,自动清缓存
查看>>
【11】ajax请求后台接口数据与返回值处理js写法
查看>>
Python菜鸟之路:Jquery Ajax的使用
查看>>
LeetCode算法题-Maximum Depth of Binary Tree
查看>>
Cox 教学视频5
查看>>
使用ffmpeg实现对h264视频解码 -- (实现了一个易于使用的c++封装库)
查看>>
flink watermark介绍
查看>>
Android Xutils 框架
查看>>
Sysbench 0.5版安装配置
查看>>
书摘—你不可不知的心理策略
查看>>
【博客话题】毕业——开始人生的艰苦历程
查看>>